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

Вниз

Реализация события клика кнопки в окне созданном динамически   Найти похожие ветки 

 
R   (2003-04-18 01:58) [0]

Вот пример функции из исходников Делфи, как в ней реализовать
механизм не закрывая это модальное окно клика по кнопке и
выполнения по этому клику например Beep ?
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);
ClientHeight := MulDiv(63, DialogUnits.Y, 8);
Position := poScreenCenter;
Prompt := TLabel.Create(Form);
with Prompt do
begin
Parent := Form;
AutoSize := True;
Left := MulDiv(8, DialogUnits.X, 4);
Top := MulDiv(8, DialogUnits.Y, 8);
Caption := APrompt;
end;
Edit := TEdit.Create(Form);
with Edit do
begin
Parent := Form;
Left := Prompt.Left;
Top := MulDiv(19, DialogUnits.Y, 8);
Width := MulDiv(164, DialogUnits.X, 4);
MaxLength := 255;
Text := Value;
SelectAll;
end;
ButtonTop := MulDiv(41, DialogUnits.Y, 8);
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), ButtonTop, ButtonWidth,
ButtonHeight);
end;
if ShowModal = mrOk then
begin
Value := Edit.Text;
Result := True;
end;
finally
Form.Free;
end;
end;


 
DJ_Sedoy ©   (2003-04-18 05:15) [1]

Логично предположить, что убрать MedalResult:=true?
Если я правильно понял вопрос


 
Palladin ©   (2003-04-18 07:16) [2]

самое очевиднейшее это назначить св-во OnClick нужному TButton


 
R   (2003-04-18 08:11) [3]

>Palladin ©
А как его назначить ведь форма создана динамичеки и кнопки тоже.
Понемаю вопрос ламерский но все же как.Приведите пример.


 
Palladin ©   (2003-04-18 08:17) [4]

у тебя пример под носом...
в файле с главной формой...

создай кнопку визуально и назначь ей обработчик OnClick и посмотри что добавилось в проекте и как это оформлено, а потом учитывай что события у компонентов это свойства которые можно присваивать...


 
R   (2003-04-18 08:51) [5]

Я всеже не понимаю как это сделать динамически. Приведите пример кода.


 
Skier ©   (2003-04-18 09:23) [6]

>R
http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988625051&n=19


 
Palladin ©   (2003-04-18 09:27) [7]

идем в справку и видим
property OnClick: TNotifyEvent;
идем дальше, видим:
type TNotifyEvent = procedure (Sender: TObject) ofobject;
думаем, думаем еще (на всякий случай)
догадались и пишем в главной форме

procedure OnMyButtonClick(Sender:TObject);
потом
описываем ее

procedure TForm1.OnMyButtonClick(Sender:TObject);
begin
Application.ShowMessage("Где моя голова была раньше?!","Эврика!);
end;

в коде дин создания твоей формы пишем (что бы достучатся до класса TForm1, мы поместим твою процедуру создания в модуль с главной формой)

with TButton.Create(Form) do
begin
Parent := Form;
Caption := SMsgDlgOK;
ModalResult := mrOk;
Default := True;
SetBounds(MulDiv(38, DialogUnits.X, 4), ButtonTop, ButtonWidth,
ButtonHeight);
OnClick:=TForm1.OnMyButtonClick;
end;


 
R   (2003-04-18 09:38) [8]

Спасибо за помощь.



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

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

Наверх




Память: 0.48 MB
Время: 0.01 c
14-791
pasha_golub
2003-04-15 17:31
2003.05.01
Лень


3-387
AleksandrKu
2003-04-14 17:03
2003.05.01
FastReport 2.41 как из дизайнера в runtime менять значения в БД?


3-443
Lony
2003-04-13 14:00
2003.05.01
Как получить все записи в определёном FieldDefs?


3-470
gram
2003-04-14 14:12
2003.05.01
Какое тип в IB соответсвует Memo?


3-461
Shrek
2003-04-04 11:37
2003.05.01
Исключение полей!