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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
1-628
Cybermozg
2003-04-19 13:50
2003.05.01
Как почистить ресурсы?


14-782
Pat
2003-04-15 14:23
2003.05.01
Программа для решения систем уравнений


14-736
silenser
2003-04-14 09:27
2003.05.01
Отчет в WORDе


1-508
code_x
2003-04-20 04:51
2003.05.01
Как в edit1.text одной проги поместить edit1.text другой?


14-748
Orcy
2003-04-11 00:04
2003.05.01
Service Process в win Xp и win9x





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