Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];

Вниз

Подскажите, как определить, какая 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.064 c
1-1107777773
Zilog
2005-02-07 15:02
2005.02.27
Вывод форматированого текста + графика


1-1107966737
juice
2005-02-09 19:32
2005.02.27
Глобальная переменная


1-1108477450
Pyro Sun
2005-02-15 17:24
2005.02.27
Различия Delphi Personal и Professional


6-1103163658
Rat
2004-12-16 05:20
2005.02.27
Запуск приложения с другого компьютера


6-1103616506
frEE)stylEr
2004-12-21 11:08
2005.02.27
ПРОБЛЕМЫ с IdTCPClient !!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский