|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
обработка события динамической кнопки
всем здрасти.
помогите мне пожалуйста, я создаю динамически кнопку Код:
B : TBitBtn; Код:
procedure TForm1.FormCreate(Sender: TObject); begin B := TBitBtn.Create(self); В.Parent := self; end; как мне обработать событие кнопки? все идеи которые были в голове ошибочные.. |
#2
|
|||
|
|||
Код:
B.OnClick:=Button1.OnClick; |
#3
|
|||
|
|||
Код:
B := TBitBtn.Create(self); b.Parent := self; b.OnClick := TBitBtn.onClick; ошибка возникает Код:
[Error] Unit1.pas(40): Method identifier expected |
#4
|
|||
|
|||
Код:
procedure MyClick(Sender: TObject); .... procedure TForm1.MyClick(Sender: TObject); begin form1.caption:='Смотри внимательно' end; procedure TForm1.FormCreate(Sender: TObject); var b:Tbutton; begin b:=TButton.Create(Self); b.Parent:=self; b.OnClick:=MyClick; end; Последний раз редактировалось Janom, 14.06.2011 в 17:17. |
#5
|
||||
|
||||
Код:
b.OnClick := TBitBtn.onClick; Вместо TBitBtn.onClick тут должно быть имя процедуры которое собственно и обрабатывает событие. Вот таким макаром: Код:
procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage('Жмякнули!') end; procedure TForm1.FormCreate(Sender: TObject); Var MyButton: TButton; begin MyButton := TButton.Create(Self); MyButton.Parent := Self; MyButton.Left := 100; MyButton.Top := 100; MyButton.Width := 100; MyButton.Height := 50; MyButton.Caption := 'Жмякни меня!'; MyButton.OnClick := Button1Click; end; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#6
|
|||
|
|||
Janom, спасибо большое. помогли
|
#7
|
|||
|
|||
помогите пожалуйста, вроде сделал как у вас написано, но
[Error] aWave.dpr(139): Undeclared identifier: 'MyClick' Код:
var form1:tform; z:integer; Button1: TButton; ColorDialog1: TColorDialog; type TForm1 = class(TForm) Button1: TButton; ColorDialog1: TColorDialog; Edit1: TEdit; procedure MyClick(Sender: TObject); end; .................................................................................. procedure TForm1.MyClick(Sender: TObject); begin showmessage('1'); end; procedure TAIMP2Visual.DisplayClick(X: Integer; Y: Integer); stdcall; begin Form1:= TForm.Create(Application); Form1.Caption:= 'Íîâîå ñîîáùåíèå'; form1.Show; form1.Height:=200; form1.Width:=400; form1.Top:=10; form1.Left:=10; button1:=TButton.Create (form1); button1.Caption := 'button1'; button1.Top := 100; button1.Left := 100; button1.Width := 80; button1.Height := 25; button1.Parent := form1; button1.OnClick := MyClick; end; |
#8
|
||||
|
||||
Так какой Button используется? Тот что в переменной или тот что в классе?
|
#9
|
|||
|
|||
Цитата:
тот что в переменной, если удалить строчку из класса - ошибка та же |
#10
|
||||
|
||||
Цитата:
Одну всё же убери. И самое главное, ошибка: для её понимания советую посмотреть юнит Dialogs.pas |
#11
|
|||
|
|||
а в чем заключается сама ошибка, или где её искать?
|
#12
|
||||
|
||||
Уже посмотрел юнит Dialogs.pas (к примеру InputQuery)?
|
#13
|
|||
|
|||
да, посмотрел, но не пойму куда именно смотреть?
Код:
function InputQuery(const ACaption, APrompt: string; var Value: string): Boolean; var Form: TForm; Prompt: TLabel; Edit: TEdit; DialogUnits: TPoint; ButtonTop, ButtonWidth, ButtonHeight: Integer; begin Result := False; Form := TForm.Create(Application); with Form do try Canvas.Font := Font; DialogUnits := GetAveCharSize(Canvas); BorderStyle := bsDialog; Caption := ACaption; ClientWidth := MulDiv(180, DialogUnits.X, 4); Position := poScreenCenter; Prompt := TLabel.Create(Form); with Prompt do begin Parent := Form; Caption := APrompt; Left := MulDiv(8, DialogUnits.X, 4); Top := MulDiv(8, DialogUnits.Y, 8); Constraints.MaxWidth := MulDiv(164, DialogUnits.X, 4); WordWrap := True; end; Edit := TEdit.Create(Form); with Edit do begin Parent := Form; Left := Prompt.Left; Top := Prompt.Top + Prompt.Height + 5; Width := MulDiv(164, DialogUnits.X, 4); MaxLength := 255; Text := Value; SelectAll; end; ButtonTop := Edit.Top + Edit.Height + 15; ButtonWidth := MulDiv(50, DialogUnits.X, 4); ButtonHeight := MulDiv(14, DialogUnits.Y, 8); with TButton.Create(Form) do begin Parent := Form; Caption := SMsgDlgOK; ModalResult := mrOk; Default := True; SetBounds(MulDiv(38, DialogUnits.X, 4), ButtonTop, ButtonWidth, ButtonHeight); end; with TButton.Create(Form) do begin Parent := Form; Caption := SMsgDlgCancel; ModalResult := mrCancel; Cancel := True; SetBounds(MulDiv(92, DialogUnits.X, 4), Edit.Top + Edit.Height + 15, ButtonWidth, ButtonHeight); Form.ClientHeight := Top + Height + 13; end; if ShowModal = mrOk then begin Value := Edit.Text; Result := True; end; finally Form.Free; end; end; |
#14
|
||||
|
||||
Код:
type TMyForm = class(TForm) private procedure MyClick(Sender: TObject); public constructor CreateNew(AOwner: TComponent); reintroduce; end; ... constructor TMyForm.CreateNew(AOwner: TComponent); var NonClientMetrics: TNonClientMetrics; begin inherited CreateNew(AOwner); NonClientMetrics.cbSize := sizeof(NonClientMetrics); if SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, @NonClientMetrics, 0) then Font.Handle := CreateFontIndirect(NonClientMetrics.lfMessageFont); end; procedure TMyForm.MyClick(Sender: TObject); begin ShowMessage('Ух как жмякнули'); end; procedure TForm1.Button5Click(Sender: TObject); var Form : TMyForm; btn : TButton; begin Form := TMyForm.CreateNew(Application); try Form.Caption:= 'qwerty'; Form.Height := 200; Form.Width := 400; Form.Top := 10; Form.Left := 10; btn := TButton.Create(Form); btn.Caption := 'Жмякни'; btn.Top := 100; btn.Left := 100; btn.Width := 80; btn.Height := 25; btn.Parent := Form; btn.OnClick := TMyForm(Form).MyClick; Form.ShowModal; finally Form.Free; end; end; Последний раз редактировалось angvelem, 19.06.2011 в 22:49. |
#15
|
|||
|
|||
благодарю за помощь, а не могли бы вы мне указать основные ошибки совершенные мной?
Главная моя ошибка - в отсутствии: Код:
constructor TMyForm.CreateNew(AOwner: TComponent); var NonClientMetrics: TNonClientMetrics; begin inherited CreateNew(AOwner); NonClientMetrics.cbSize := sizeof(NonClientMetrics); if SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, @NonClientMetrics, 0) then Font.Handle := CreateFontIndirect(NonClientMetrics.lfMessageFont); end; |