Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.27;
Скачать: CL | DM;

Вниз

Подскажите, как определить, какая Button нажата (в режиме run-tim   Найти похожие ветки 

 
Michael5   (2005-02-13 20:18) [0]

Кнопки автоматически генерируются, а затем мне хотелось бы их перемещать, для чего мне нужно определить, какая кнопка нажата, присвоить ее имя переменной btn:TButton, после чего уже она используется как например, здесь:

procedure TForm1.RunTimeButtonMouseDown(Sender: TObject; Button: TMouseButton;
                   Shift: TShiftState; X, Y: Integer);
begin
   if ssCtrl in Shift then
   begin
       SetCapture(btn.Handle);
       Capturing := true;
       MouseDownSpot.X := x;
       MouseDownSpot.Y := Y;
   end;
end;


 
DrPass ©   (2005-02-13 20:20) [1]

btn:=Sender as TButton;


 
begin...end ©   (2005-02-13 20:23) [2]

> Michael5   (13.02.05 20:18)

> присвоить ее имя переменной btn:TButton

Переменной типа TButton ИМЯ кнопки присвоить нельзя.

> мне нужно определить, какая кнопка нажата

Используйте параметр Sender обработчика - это и есть нажатая кнопка. А её имя будет (Sender as TButton).Name. А если Вы не уверены, что попадание в этот обработчик вызвано именно нажатием кнопки - добавьте впереди проверку: if Sender is TButton then ...


 
Michael5   (2005-02-13 20:27) [3]

Огромное спасибо! Все работает :)


 
Michael5   (2005-02-13 22:52) [4]

И еще вопрос, если можно!
Вопрос по Handle. Если для Button такая функция работает:

btn:=Sender as TButton;
   SetCapture(btn.Handle);...

то что мне делать в случае с Edit или StaticText?
Плохо понимаю (извиняюсь, конечно, за глупые вопросы), там дело разных видах этих Handle, что ли...

Вот конкретный кусок кода, который хотелось бы сделать рабочим (lbl здесь или :=TLabel, или TStaticText):

procedure TForm1.RunTimeLabelMouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
begin lbl:=Sender as TStaticText;
   if ssCtrl in Shift then begin
   SetCapture(lbl.Handle);Capturing := true;
   MouseDownSpot.X := x;MouseDownSpot.Y := Y; end;
   if ssAlt in Shift then begin lbl.Destroy; end; end;


 
Плохиш ©   (2005-02-13 23:11) [5]

(Sender as TStaticText).Handle

PS. Совершенно нет никакого желания телепатировать, какой тип имеет переменная lbl.

Handle он и есть Handle типа LongWord.


 
Michael5   (2005-02-13 23:22) [6]

>Плохиш
Спасибо, действительно, все в порядке, ошибку нашел, не в том месте запаниковал :))



Страницы: 1 вся ветка

Текущий архив: 2005.02.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.031 c
1-1107929788
snake_r
2005-02-09 09:16
2005.02.27
Определение нажатой клавиши


6-1102978825
Muhan
2004-12-14 02:00
2005.02.27
Нужен код интернет-страницы задавая ссылку этой страницы


1-1108217061
Arazel
2005-02-12 17:04
2005.02.27
Как запретить DELPHI создавать резервные копий файлов! ~...pas


1-1108296764
Layner
2005-02-13 15:12
2005.02.27
Здравствуйте! научите передавать особый параметр в процедуру


1-1108028239
Homa_Programer
2005-02-10 12:37
2005.02.27
word (((