[delphi] Submenu uitklappen via andere button

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dag Programmeurs,

Momenteel ben ik me nog aan het orienteren binnen Delpi (2009) in Codegear Rad Studio.
Nu heb ik een Actionmanager opgezet met daarin een Actionbar.
Op deze Actionbar heb ik dan weer TActionClientItems staan die ook weer (sub)TActionClientItems bevatten.
Er verschijnt dan netjes (ergens onderwater getekend) een soort van extra pijltje naar de "eerste" button.
Als ik op het pijltje klik opend netjes het submenu, maar de button zelf heeft een eigen aparte actie.
Weet iemand hoe ik de klik van de "hoofd" button kan linken/doorlusse/o.i.d. aan het pulldownmenu, zodat het niet uitmaakt of je op de button zelf klikt of op het pijltje ernaast?
Heb nu zoiets als
code:
1
2
3
4
5
6
procedure TEnvelopForm.Action1Execute(Sender: TObject);
begin
  inherited;
  //ShowMessage('ToDo');
  actionmanager4.ActionBars[0].Items[5].Items[0].Visible:=True;
end;

Maar dit beheerd dit het uit te klappen gedeelte terwijl het nog onzichtbaar is.
Ik kan dus wel via de hoofdknop zeg maar de Caption aanpassen, maar dan moet ik nog op het pijltje klikken om het menu te zien (en dus de gewijzigde Caption).

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Het gaat neem ik aan gewoon over een SplitButton? Dan zou je even moeten kijken hoe je het DropDown menu kan benaderen.

In .NET kan je volgens mij ( Als ik even zo snel in de MSDN kijk ) gewoon met
C#:
1
splitButton.ShowDropDown();

Of eventueel
C#:
1
splitButton.DropDown.Show();

de dropdown laten zien. Het lijkt me dat dat in jouw omgeving op een soortgelijke manier gaat.

[ Voor 8% gewijzigd door Woy op 15-07-2009 10:49 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hey Woy,

Het lijkt inderdaad op een splitbutton, maar binnen Delphi zijn "echte" spiltbuttons Vista Only.
Dus het is niet echt aan te spreken als zijnde een spiltbutton, want deze button werkt ook in < Vista.

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Maar het zal toch gewoon als een soort splitbutton gedefineerd zijn? Dat wil zeggen eigenlijk 2 buttons ( 1 default action en een drop down arrow ) en een DropDown menu. Je zult dus op het containing control een method aan moeten roepen, of het drop-down control moeten localiseren en die visible zetten.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
In die richting moet ik inderdaad wel zoeken.
Ergens onder water is het uiteindelijk een button en bij een button kun je inderdaad gewoon een dropdownmenu tonen. Via het pad is het momenteel alleen nog even lastig om te typecasten naar een TButton.
code:
1
2
3
4
5
6
7
8
9
procedure TEnvelopForm.Action1Execute(Sender: TObject);
var
  btn: TButton;
begin
  inherited;
  //ShowMessage('ToDo');
  btn:=actionmanager4.ActionBars[0].Items[5];
  btn.DropDownMenu.Popup(500,500);
end;

wil nog niet echt

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Dat is nogal vaag, beschrijf dan even duidelijk welke foutmelding je krijgt! En verder is het handig als je gewoon in de documentatie duikt. Je zult op moeten zoeken welk type je hebt, en welke methode je daar op aan moet roepen. Zomaar in het wilde weg wat dingen proberen is natuurlijk niet de meest efficiënte manier.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • The Fox NL
  • Registratie: Oktober 2004
  • Laatst online: 10:52
Ik heb hier even snel wat geprobeerd met Turbo Delphi 2006. Volgens mij ondersteund de TActionBar niet wat jij wilt. Jij hebt een ActionClientItem, en daaronder hangen er nog meer. Aan een ActionClientItem wordt een Action gehangen, de ActionToolBar geeft dat ook zo weer, ook al bedoel jij iets anders.

Wat jij denk ik wil is een normale menubar. Sleep dus een TMainMenu op je form, ontwerp het menu en koppel daar je actions aan. Wil je geen mainmenu, maar een toolbar, dan heb je meer vrijheid met een TToolbar, maar is de TActionToolbar waarschijnlijk voldoende.

Acties:
  • 0 Henk 'm!

Verwijderd

Delphi:
1
TCustomDropDownButton(actionmanager4.ActionBars[0].Items[5].Items[0].Control).DropDownClick;

in je Action.OnExecute zetten should do the trick...
Pagina: 1