Главная страница
    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.46 MB
Время: 0.051 c
14-1107344630
saNat
2005-02-02 14:43
2005.02.27
Ищу материал


14-1107415284
Jay1982
2005-02-03 10:21
2005.02.27
ЖК-Монитор


11-1091516768
Unknown Mystic
2004-08-03 11:06
2005.02.27
Project_1.inc


6-1103648512
banderas
2004-12-21 20:01
2005.02.27
Сетевое подключение


3-1105697007
mikel
2005-01-14 13:03
2005.02.27
Как узнать после INSERT присвоенный auto_increment ом ключ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский