Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Правильные диалоги от Борланда

Delphi , Программа и Интерфейс , Диалоги и Фреймы

Правильные диалоги от Борланда

Если покопаться в фирменных "Дельфовых" примерах, можно найти ГОРАЗДО более удачную конструкцию (которую, кстати, я уже давно использую).

Еще раз подчеркну - это не моя придумка, а ребят из Борланда.

Эта конструкция позволяет:

  • Возвращать ЛЮБЫЕ значения;
  • ДИНАМИЧЕСКИ создавать форму;
  • Еще куча всяких "бонусов", просто лень описывать :-)

Итак, смотрим исходники...
 
В этом примере я привел два наиболее типичных случая. 1-й - InputString - просто ввод, без анализа отмены, второй - MrInputString - с анализом отмены ввода (ModalResult).
 
Оба случая используют начальные значения. Без них - Еще проще...
В принципе - ваша фантазия ничем не ограничивается. Я, например, храню последние вводившиеся значения в реестре и читаю их оттуда после создания формы. Удобно.
 
Пользователь не мается вводя по 10 раз одно и то же, а у меня не болит голова с инициализацией полей (есть специальный класс, который этим занимается, но это отдельная тема...)

ИСХОДНИКИ:

Code:

//**************************************************************
//Основной модуль Обратите Внимание!  "uses Dialog;"
 
implementation
 
{$R *.dfm}
uses
Dialog;
 
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
ShowMessage('Вы ввели '+InputString('Начальное значение'));
end;
 
procedure TForm1.BitBtn2Click(Sender: TObject);
Var
Str: String;
begin
Str:='Начальное значение';
If MrInputString(Str) = mrOk Then
   ShowMessage('Вы ввели '+Str)
Else
   ShowMessage('Вы отменили ввод');
end;
 
//********************************************************
//Модуль диалога
unit Dialog;
 
interface
 
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons;
 
type
TOptionsDlg = class(TForm)
   Bevel1: TBevel;
   BitBtn1: TBitBtn;
   BitBtn2: TBitBtn;
   Edit1: TEdit;
   Label1: TLabel;
   Bevel2: TBevel;
   Label3: TLabel;
   procedure FormKeyDown(Sender: TObject; var Key: Word;
     Shift: TShiftState);
private
   { Private declarations }
public
   { Public declarations }
end;
 
var
OptionsDlg: TOptionsDlg;
 
function InputString(BeginVal: String): String;
function MrInputString(Var Str: String): TModalResult;
 
implementation
 
{$R *.dfm}
 
function InputString(BeginVal: String): String;
begin
With TOptionsDlg.Create(Application.MainForm) do
   Try
     Edit1.Text:=BeginVal;
     If ShowModal = mrOk Then
       Result:=Edit1.Text
     Else
       Result:='"Отмена"';
   Finally
     Free;
   End;
end;
 
function MrInputString(Var Str: String): TModalResult;
begin
With TOptionsDlg.Create(Application.MainForm) do
   Try
     Edit1.Text:=Str;
     Result:=ShowModal;
     Str:=Edit1.Text;
   Finally
     Free;
   End;
end;
 
procedure TOptionsDlg.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Case Key of
   27:     ModalResult:=mrCancel;
   13: ModalResult:=mrOk;
End;
end;
 
end.

Сергей Горбань

http://www.delphikingdom.com

В статье Сергея Горбаня описана конструкция диалоговых окон Borland, позволяющая возвращать любые значения и динамически создавать форму.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Диалоги и Фреймы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:01:17/0.0055520534515381/1