Wciśnięty ToolButton dla DropDown [Delphi]

0

Witam. Mam ToolButtona ze stylem ustawionym na DropDown. Pod DropDownMenu podpięty jest PopupMenu. Jak zrobić żeby po kliknięciu ToolButtona został on wciśnięty? Kiedy wybiorę akcję z PopupMenu z przepisanym kodem

ToolButton1.Down := true;

przycisk jest wciśnięty ale nie mogę wykonać tej samej akcji bez otwierania PopupMenu. Próbowałem już wybierać down := true dla zdarzenia mousedown w ToolButtonie ale nie działa. Domyślnie jest już przypisana jakaś akcja do ToolButtona więc wszystko powinno działać po jego wybraniu, tzn. akcja się wykonuje ale przycisk pozostaje w górze. Żeby został wciśnięty muszę wybrać akcję z popupmenu. Czy ktoś wie jak to można rozwiązać?

0

albo ja czegoś nie rozumiem albo Ty jasno się nie wyraziłeś, przecież normalnie dodając do OnClick w toolbutton'ie - ToolButton1.Down:=true; wciska go.

0

Niestety ale nie rozumiesz. Napisałem wyraźnie że chodzi o styl DropDown dla ToolButtona a tutaj nawet jak dodasz do Onclick Down:= True to nie będzie wciśnięty, pomijając to że w OnClick mam przypisane zdarzenie z PopupMenu. Zrób tak jak napisałem w pierwszym poście to się dowiesz że to faktycznie nie działa :/ W helpie delphi odnośnie toolbuttona też jest napisane że nie da się 'wcisnąć' jeśli jest wybrany styl DropDown ale skoro można to jednak zrobić po przypisaniu akcji z PopupMenu to właśnie chce to zrobić, tylko że bezpośrednio od razu po przyciśnięciu przycisku. Dla rozwianie wątpiwości wklejam czysty kod tylko z ToolButtonem

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ComCtrls, ToolWin;

type
  TForm1 = class(TForm)
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    PopupMenu1: TPopupMenu;
    jeden1: TMenuItem;
    dwa1: TMenuItem;
    procedure jeden1Click(Sender: TObject);
    procedure dwa1Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.jeden1Click(Sender: TObject);
begin
ToolButton1.Down := true;
end;

procedure TForm1.dwa1Click(Sender: TObject);
begin
ToolButton1.Down := True;
end;

end.
0

No to patrz:
http://img84.imageshack.us/f/57895074.jpg/
Do pierwsze pozycji z popa przypisałem down:=true;

Po pierwsze po co do OnClick przypisujesz Popupmenu ? jak od tego masz DropdownMenu, a po drugie co z tego, że masz jakieś zdarzenie przypisane do OnClick ? zdarzeń możesz przypisywać ile chcesz.

0

Moje gratulacje ale tak to ja już mam i nie o tym pisałem...
Wciśnij teraz buttona po lewej strony (bez rozwijania popupmenu) tak żeby został wciśnięty. Odnośnie dalszej części z onclick itd. się nie wypowiadam bo chodziło mi jedynie o obrazowe opisanie co i jak, w rzeczywistości nic tam nie przypisuje.

0

Nie da się tak, bo albo wybierasz typ przycisku jako Dropdown albo Check ;-P
Tak więc albo piszesz nowy komponent albo szukac takiego co to ma :)

0

nie znam takiego zwrotu 'nie da się' przy programowaniu :)
wiem jaka jest teoria na ten temat to pisałem co znalazłem w helpie, ale skoro przycisk jest wciśnięty po wyborze z popupmenu to chce to programowo przypisać do kliknięcia. zawsze jest w action dla toolbuttona pierwsza pozycja z popupmenu więc musi być jakiś sposób. próbowałem wywołać wybranie czegoś z popumenu ale albo brak reakcji albo dostawałem błąd przy dostępie do pamięci.

1 użytkowników online, w tym zalogowanych: 0, gości: 1