Читать «Виртуальная библиотека Delphi» онлайн - страница 150

Unknown

end;

var Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);

begin

 Panel1.Align := alBottom;

 MenuItemFile.Hint := 'File Menu';

 MenuItemOpen.Hint := 'Opens A File';

 MenuItemClose.Hint := 'Closes the Application';

 Application.OnHint := HintHandler;

end;

procedure TForm1.HintHandler(Sender: TObject);

begin

 Panel1.Caption := Application.Hint;

end;

procedure TForm1.MenuItemCloseClick(Sender: TObject);

begin

 Application.Terminate;

end;

procedure TForm1.MenuItemOpenClick(Sender: TObject);

begin

 if OpenDialog1.Execute then Form1.Caption := OpenDialog1.FileName;

end;

Вопрос:

Как опеделить состояние списка ComboBox, выпал/скрыт?

Ответ:

Пошлите ComboBox сообщение CB_GETDROPPEDSTATE.

Пример:

if SendMessage(ComboBox1.Handle, CB_GETDROPPEDSTATE,0,0) = 1 then begin

 {список ComboBox выпал}

end;

Вопрос:

Как удалить каталог вместе со всеми содержащимися в нем файлами?

Ответ:

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

procedure TForm1.Button1Click(Sender: TObject);

var

 DirInfo: TSearchRec;

 r: integer;

begin

 r := FindFirst('C:\Download\*.*', FaAnyfile, DirInfo);

 while r = 0 do begin

  if ((DirInfo.Attr and FaDirectory <> FaDirectory) and (DirInfo.Attr and FaVolumeId <> FaVolumeID)) then if DeleteFile(pChar('C:\Download\' + DirInfo.Name))= false then ShowMessage('Unable to delete: C:\Download\'+DirInfo.Name);

  r := FindNext(DirInfo);

 end;

 SysUtils.FindClose(DirInfo);

 if RemoveDirectory('C:\Download\') = false then ShowMessage('Unable to delete directory: C:\Download\');

end;

Вопрос:

Как отключить системное меню формы и кнопки Minimize, Maximize, and Close во время выполнения(Runtime)?

Ответ:

В приведенном примере показано как это сделать

Пример:

procedure TForm1.Button1Click(Sender: TObject);

begin

 {Disable}

 Form1.BorderIcons := Form1.BorderIcons - [biSystemMenu, biMinimize, biMaximize];

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

 {Enable}

 Form1.BorderIcons := Form1.BorderIcons + [biSystemMenu, biMinimize, biMaximize];

end;

Вопрос:

Как извлечь Red, Green, и Blue компонент из определенного цвета?

Ответ:

Используйте функции Window API Get RValue(), GetGValue(), и GetBValue().

Пример:

procedure TForm1.Button1Click(Sender: TObject);

begin

 Form1.Canvas.Pen.Color := clRed;

 Memo1.Lines.Add('Red := ' + IntToStr(GetRValue(Form1.Canvas.Pen.Color)));

 Memo1.Lines.Add('Red := ' + IntToStr(GetGValue(Form1.Canvas.Pen.Color)));