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

Unknown

Можно ли использовать иконку как картинку на кнопке TSpeedButton?

Ответ:

Можно.

См. пример.

Пример:

uses ShellApi;

procedure TForm1.FormShow(Sender: TObject);

var Icon: TIcon;

begin

 Icon := TIcon.Create;

 Icon.Handle := ExtractIcon(0,'C:\WINDOWS\NOTEPAD.EXE',1);

 SpeedButton1.Glyph.Width := Icon.Width;

 SpeedButton1.Glyph.Height := Icon.Height;

 SpeedButton1.Glyph.Canvas.Draw(0, 0, Icon);

 Icon.Free;

end;

Вопрос:

Как поместить прозрачную фоновую каринку на компонент CoolBar?

Ответ:

procedure TForm1.Button1Click(Sender: TObject);

var

 Bm1 : TBitmap;

 Bm2 : TBitmap;

begin

 Bm1 := TBitmap.Create;

 Bm2 := TBitmap.Create;

 Bm1.LoadFromFile('c:\download\test.bmp');

 Bm2.Width := Bm1.Width;

 Bm2.Height := Bm1.Height;

 bm2.Canvas.Brush.Color := CoolBar1.Color;

 bm2.Canvas.BrushCopy(Rect(0, 0, bm2.Width, bm2.Height), Bm1, Rect(0, 0, Bm1.width, Bm1.Height), ClWhite);

 bm1.Free;

 CoolBar1.Bitmap.Assign(bm2);

 bm2.Free;

end;

Вопрос:

Ползунок компонента TScrollBar все время мигает. Как это отключить?

Ответ:

Установите свойтсво ScrollBar.TabStop в False.

Вопрос:

Как программно перевести DBgrid в реим редактирования и установить курсор в окошке редактирования в требуемую позицию?

Ответ:

Переведите таблицу в режим редактирования, затем получите дескриптор (handle) окна редактирования и перешлите ей сообщение EM_SETSEL. В качестве параметров вы должны переслать начальную позицию курсора, и конечную позицию, определяющую конец выделения текста цветом. В приведенном примере курсор помещается во вторую позицию, текст внутри ячейки не выделяется.

Пример:

procedure TForm1.Button1Click(Sender: TObject);

var h : THandle;

begin

 Application.ProcessMessages;

 DbGrid1.SetFocus;

 DbGrid1.EditorMode := true;

 Application.ProcessMessages;

 h:= Windows.GetFocus;

 SendMessage(h, EM_SETSEL, 2, 2);

end;

Вопрос:

Как поместить курсор в определенную позицию edit'а и подобных ему элементов управления?

Ответ:

Можно использовать методы Delphi SelStart() и SelectLength().

Пример:

procedure TForm1.Button1Click(Sender: TObject);

begin

 Edit1.SetFocus;

 {переводим курсор во вторую позицию}

 Edit1.SelStart := 2;

 {не выделяем никакого текста}

 Edit1.SelLength := 0;

end;

Вопрос:

Как среагировать на минимизацию-максимизацию формы перед тем как произойдет изменение размера формы?

Ответ:

В примере перехватывается сообщение WM_SYSCOMMAND. Если это сообщение говорит о минимизации или максимизации формы — пищит динамик.

Пример:

type TForm1 = class(TForm)

private

 {Private declarations}

 procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;

public

 {Public declarations}

end;

var Form1: TForm1;