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

Unknown

 {Add the bitmaps to the item at index 1 in PopUpMenu}

 SetMenuItemBitmaps(PopUpMenu1.Handle,1,MF_BYPOSITION,BmUnChecked.Handle, BmChecked.Handle);

end;

procedure TForm1.FormDestroy(Sender: TObject);

begin

 bmUnChecked.Free;

 bmChecked.Free;

end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

var pt : TPoint;

begin

 pt := ClientToScreen(Point(x, y));

 PopUpMenu1.Popup(pt.x, pt.y);

end;

Вопрос:

Как узнать число кадров AVI файла, и выяснить как долго будет проигрываться этот файл?

Ответ:

В приведенном примере указано как получить эту информацию.

Пример:

procedure TForm1.Button1Click(Sender: TObject);

begin

 MediaPlayer1.TimeFormat := tfFrames;

 ShowMessage('Number of frames = ' + IntToStr(MediaPlayer1.Length));

 MediaPlayer1.TimeFormat := tfMilliseconds;

 ShowMessage('Number of milliseconds = ' + IntToStr(MediaPlayer1.Length));

end;

Вопрос:

Как изменить число фиксированных колонок в TDbGrid?

Пример:

procedure TForm1.Button1Click(Sender: TObject);

begin

 TStringGrid(DbGrid1).FixedCols := 2;

end;

Вопрос:

Некоторые компоненты баз данных (и среди них TDBGrid) никак не меняют визуальных свойств, когда к ним отключен доступ (disabled). Как это изменить програмно?

Ответ:

Ниже приведен пример, меняющий цвет шрифта на clGray, когда доступ к элементу управления (в данном случае TDBGrid) запрещен (disabled).

procedure TForm1.Button1Click(Sender: TObject);

begin

 DbGrid1.Enabled := false;

 DbGrid1.Font.Color := clGray;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

 DbGrid1.Enabled := true;

 DbGrid1.Font.Color := clBlack;

end;

Вопрос:

Как определить нажаты ли клавиши Shift, Alt, or Ctrl в какой-либо момент времени?

Ответ:

В приведенном примере показано как определить нажата ли клавиша Shift при выборе строчки меню. Пример также содержит функции проверки состояния клавиш Alt, Ctrl.

Пример:

function CtrlDown : Boolean;

var State : TKeyboardState;

begin

 GetKeyboardState(State);

 Result := ((State[vk_Control] And 128) <> 0);

end;

function ShiftDown : Boolean;

var State : TKeyboardState;

begin

 GetKeyboardState(State);

 Result := ((State[vk_Shift] and 128) <> 0);

end;

function AltDown : Boolean;

var State : TKeyboardState;

begin

 GetKeyboardState(State);

 Result := ((State[vk_Menu] and 128) <> 0);

end;

procedure TForm1.MenuItem12Click(Sender: TObject);

begin

 if ShiftDown then Form1.Caption := 'Shift'

 else Form1.Caption := '';

end;

Вопрос:

Как изменить шрифта hint'а?

Ответ:

В примере перехватывается событие Application.OnShowHint и изменяется шрифт Hint'а.