Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.08.2013, 03:57   #21
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

Вообще можно без таймеров, они не нужны....
За 15 минут все это пишется!
Вот те код исконно delphiйский....
Код:
unit Unit3;

interface

uses
  Winapi.Windows,
  Winapi.Messages,
  System.SysUtils,
  System.Variants,
  System.Classes,
  Vcl.Graphics,
  Vcl.Controls,
  Vcl.Forms,
  Vcl.Dialogs,
  Vcl.ComCtrls,
  Vcl.StdCtrls;

type
  TMyTrackBarChangeEx = procedure(Sender: TObject; LButtonInHold: Boolean) of object;

  TMyTrackBar = class(TTrackBar)
  private
    fLBtnHolds: Boolean;
    fChangeEx: TMyTrackBarChangeEx;
    procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;
    procedure WMLButtonUp(var Message: TWMLButtonUp); message WM_LBUTTONUP;
  protected
    procedure Changed; override;
  public
    constructor Create(AOwner: TComponent); override;
  published
    property OnChangeEx: TMyTrackBarChangeEx read fChangeEx write fChangeEx;
    property Align;
    property Anchors;
    property BorderWidth;
    property Ctl3D;
    property DoubleBuffered;
    property DragCursor;
    property DragKind;
    property DragMode;
    property Enabled;
    property Constraints;
    property LineSize;
    property Max;
    property Min;
    property Orientation;
    property ParentCtl3D;
    property ParentDoubleBuffered;
    property ParentShowHint;
    property PageSize;
    property PopupMenu;
    property Frequency;
    property Position;
    property PositionToolTip;
    property SliderVisible;
    property SelEnd;
    property SelStart;
    property ShowHint;
    property ShowSelRange;
    property TabOrder;
    property TabStop;
    property ThumbLength;
    property TickMarks;
    property TickStyle;
    property Touch;
    property Visible;
    property StyleElements;
    property OnContextPopup;
    property OnChange;
    property OnDragDrop;
    property OnDragOver;
    property OnEndDock;
    property OnEndDrag;
    property OnEnter;
    property OnExit;
    property OnGesture;
    property OnKeyDown;
    property OnKeyPress;
    property OnKeyUp;
    property OnStartDock;
    property OnStartDrag;
  end;

procedure register;

implementation

{ TMyTrackBar }

procedure register;
begin
  RegisterComponents('Samples', [TMyTrackBar]);
end;

procedure TMyTrackBar.Changed;
begin
  inherited;
  if Assigned(fChangeEx) then
    fChangeEx(Self, fLBtnHolds);
end;

constructor TMyTrackBar.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
end;

procedure TMyTrackBar.WMLButtonDown(var Message: TWMLButtonDown);
begin
  inherited;
  fLBtnHolds := True;
end;

procedure TMyTrackBar.WMLButtonUp(var Message: TWMLButtonUp);
begin
  inherited;
  fLBtnHolds := False;
end;
Устанавливай и пользуйся.

Работает просто:
Там 3 перегруженных метода.
2 ловушки на мышару, 1 на левое нажатие, 2 на поднятие.
Пока не поднята кнопка,кнопка считается зажатой.
Перегруженное событие Changed вызываемое в предке,
вызывается и у нас, а мы вызываем своё событие ChangeEx в котором LButtonInHold указывает на состояние левой кнопки мышки.

Под правую, и все остальные, сам переделаешь.

работает на ура.

Последний раз редактировалось Человек_Борща; 01.08.2013 в 03:59.
Человек_Борща вне форума Ответить с цитированием
Старый 01.08.2013, 17:34   #22
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

спасибо, но все же, как sleep занести в поток? Или Человек_Борща это и сделал? Код мне готовый не нужен, потому что надо стараться писать самому, от копипасты ничего хорошего не добьешься, а мой алгоритм в следующем, ну немного исправленный правда, что если кнопка отпущена, то заголовок формы немного держится и затерается, а событие onchange опять же показывает громкость на форме, знаю что алгоритм так себе, мешает sleep, вот и хочу его вынести в поток)
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 01.08.2013, 18:11   #23
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

Цитата:
Или Человек_Борща это и сделал?
Я не использовал ни таймеры ни потоки ни Sleep'ы.

А только 2 хука и Bool переменную.
Человек_Борща вне форума Ответить с цитированием
Старый 01.08.2013, 18:35   #24
IvaniuS
Форумчанин
 
Аватар для IvaniuS
 
Регистрация: 16.04.2007
Сообщений: 225
По умолчанию

Цитата:
Сообщение от Алексей_2012 Посмотреть сообщение
спасибо, но все же, как sleep занести в поток? Или Человек_Борща это и сделал? Код мне готовый не нужен, потому ..........форме, знаю что алгоритм так себе, мешает sleep, вот и хочу его вынести в поток)
Так сделай еще 1 таймер и запускай его в событии онкейап, а в событии таймера стирай заголовок формы.
IvaniuS вне форума Ответить с цитированием
Старый 02.08.2013, 02:53   #25
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,894
По умолчанию

[QUOTE=Алексей_2012;1259227]спасибо, но все же, как sleep занести в поток? /QUOTE]
Чем вам так приспичило использование доппотока?
northener вне форума Ответить с цитированием
Старый 04.08.2013, 22:31   #26
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

я хочу уменьшить размер исходника, с таймером просто, а с потоком? Научите с ними работать, пожалуйста
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 04.08.2013, 22:39   #27
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
хочу уменьшить размер исходника
Всмысле размер исходника? использование TThread врядли поможет в этом деле, учитывая что еще придется описывать для нее свой класс. Если конечно не использовать анонимные потоки, что возможно в ХЕ-шных Делфи.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.08.2013, 23:08   #28
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

Цитата:
Если конечно не использовать анонимные потоки, что возможно в ХЕ-шных Делфи.
о_О Что за зверь такой? Можно подробнее?

Цитата:
я хочу уменьшить размер исходника, с таймером просто, а с потоком? Научите с ними работать, пожалуйста
Поток только увеличит размер исходника. Я уже писал и компонент готовый дал, где без потоков, таймеров, циклов все работает.
Человек_Борща вне форума Ответить с цитированием
Старый 07.08.2013, 23:04   #29
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Цитата:
[Fatal Error] Unit1.pas(6): File not found: 'Winapi.Windows.dcu'
извиняюсь. у меня не установлен какой-то компонент?
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 07.08.2013, 23:07   #30
Icabod
Новичок
Джуниор
 
Регистрация: 07.08.2013
Сообщений: 18
По умолчанию

Цитата:
хочу уменьшить размер исходника
Всмысле размер исходника? использование TThread врядли поможет в этом деле, учитывая что еще придется описывать для нее свой класс. Если конечно не использовать анонимные потоки, что возможно в ХЕ-шных Делфи.
Это простите из пустого в порожнее, но с обратным эффектом. Xe генерирует огромные исполняемые бинарники, так что толку мало от нее. Из делфей пятерка самая компактная в этом плане.
если хотите быть в безопасности, поставьте патч на дыру в жопе!
Icabod вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перемещение формы за заголовок Airou C++ Builder 4 04.04.2013 03:31
Сменить заголовок формы из другой формы F1nZeR C# (си шарп) 4 27.08.2011 11:50
Убрать заголовок у формы tae1980 Microsoft Office Excel 2 26.01.2011 16:13
Заголовок Child формы имеет цвет неактивной формы, хотя форма активна? PrimaryPro Общие вопросы Delphi 0 12.03.2010 11:12
Как реализовать перемещение ползунка при проигрывании mp3 файла компонент mediaplayer, в нужную позицию? strannik Компоненты Delphi 5 12.12.2006 05:23