Code:

var

{©Drkb v.3(2007): www.drkb.ru}

NewAction : TAction;

begin

NewAction := TAction.Create(self);

NewAction.ActionList := ActionList1;

end;

 Автор ответа: Dayana 

Функция CreateAction (AOwner: TComponent;ActionClass: TBasicActionClass ):TBasicAction;

Модуль: ActnList

Функция создает действие (Action) заданного типа, которое отображается во время проектирования в редакторе списка Action.

Тип Action указывается в параметре ActionClass.

Вызов функции аналогичен выполнению кода ActionClass.Create(AOwner), за исключением того, что функция CreateAction использует значение параметра Resource процедуры RegisterActions для инициализации значений action-объекта, основанного на данном параметре.

 

Вы не можете изменить цвет стандартного TButton, так как кнопки управления окнами всегда рисует себя с

цвет кнопки определяется в панели управления. Но можно создать создать новый компонент TButton и ручка

и рисунок поведения есть.

 

Этот компонент представляет из себя кнопку, на которую не надо нажимать, чтобы получить событие OnClick. Достаточно переместить курсор мышки на кнопку. При создании такого компонента традиционным способом, требуется довольно много времени, так как необходимо обрабатывать мышку, перехватывать её и т.д. Однако результат стоит того!

 

 

Code:

 

SpeedButton1.Perform(WM_LBUTTONDOWN, 0, 0);

SpeedButton1.Perform(WM_LBUTTONUP, 0, 0);

 

Я знаю как нажать кнопку через keypress, но хотя пользователь определил действие в обработчике события OnClick, сама кнопка не отражает видимых изменений, происходящих при ее нажатии мышью. Кто-нибудь может мне помочь?

 

Вы можете сделать кнопку "нажатой" или "ненажатой", посылая ей сообщение BM_SETSTATE. Определить ее текущее состояние можно, послав ей сообщение BM_GETSTATE.

 

Для нажатия кнопки:

 

Выводите текст надписи непосредственно на "glyph" TBitBtn'а

Code:

procedure TForm1.FormCreate(Sender: TObject);

var

R: TRect;

N: Integer;

Buff: array[0..255] of Char;

begin

with BitBtn1 do

   begin

     Caption := 'A really really long caption';

     Glyph.Canvas.Font := Self.Font;

     Glyph.Width := Width - 6;

     Glyph.Height := Height - 6;

     R := Bounds(0, 0, Glyph.Width, 0);

     StrPCopy(Buff, Caption);

     Caption := '';

     DrawText(Glyph.Canvas.Handle, Buff, StrLen(Buff), R,

       DT_CENTER or DT_WORDBREAK or DT_CALCRECT);

     OffsetRect(R, (Glyph.Width - R.Right) div 2,

       (Glyph.Height - R.Bottom) div 2);

     DrawText(Glyph.Canvas.Handle, Buff, StrLen(Buff), R,

       DT_CENTER or DT_WORDBREAK);

   end;

end;

 

В некоторых видео режимах прозрачная часть glyph'а стандартного TBitBtn становится видной. Как этого избежать?

 

В примере используется техника закраски прозрачной части glyph'а цветом кнопки на которой он находится - таким образом glyph кажется прозрачным.

 

Как выдать текст под наклоном?

 

Чтобы вывести под любым углом текст необходимо использовать TrueType Fonts (например «Arial»). Например:

 

Автор: Dennis Passmore

 

Могу ли я из ресурсов поочередно загружать глифы для кнопок speedbutton и, если да, то как это сделать?

 

Например, если в вашем проекте используется TDBGrid, то иконки кнопок компонента DBNavigator могут линковаться вашей программой, и их можно загрузить для использования в ваших speedbutton следующим образом:

 

сли вы хотите, чтобы кнопка или пункт меню выполнял другую функцию при нажатой кнопке  shift ,

вы можете использовать функцию GetKeyState .

 

GetKeyState принимает в качестве параметра виртуальный код кнопки и возвращает значение меньше 0,

если кнопка нажата.