Autor Téma: Show/Hide tlacitek v toolbar  (Přečteno 720 krát)

Offline raul

  • Hrdina
  • ****
  • Příspěvků: 274
  • Karma: 15
    • Verze Delphi: FPC :D
Show/Hide tlacitek v toolbar
« kdy: 06-08-2019, 10:55:59 »
Zdarec opet :)

Mam Toolbar se 4 tlacitky, ktera se maji zobrazovat a skryvat dle zalozky v TabControlu. Bohuzel, jakmile je schovam, uz je nezobrazim (resp asi jakmile je poprve prepnu). Vtipne je, ze v ruznych castech laborace jsem dosel k tomu, ze se tlacitka neschovavaly, ale prestal na nich fungovat onclick apod.
Ted jsem ve stavu, jak pisi - tj, jakmile schovam, uz nezobrazim. Je treba nejaky invalidate ci neco podobneho ?

Jo a kdyz apku obcas minimalizuji, a opet zobrazim, nekdy se objevi vsechny 4 (jako v navrhu). Nasledujici metodu poustim ve form create a posleze v udalostech menicich tab rucne.  Komenty jsou tam jen pro ladeni, cil je, aby to chodilo komplet bez nich.


procedure TForm1.UpdateHdrButtons;
begin
   if Tabs.ActiveTab = Detail then
   begin
//      btnMenu.Visible := false;
      btnBack.Visible := true;
      btnDone.Visible := true;
//      btnAdd.Visible := false;
   end else
   begin
//      btnMenu.Visible := true;
      btnBack.Visible := false;
      btnDone.Visible := false;
//      btnAdd.Visible := true;
   end;
end;


Diky
Lazarus 1.6.3:), FPC, Intel/Arm, Windows/Linux

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4565
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:Show/Hide tlacitek v toolbar
« Odpověď #1 kdy: 06-08-2019, 21:48:23 »
Mobilné aplikácie nerobím, ale to nevadí.
V takých prípadoch ako si tu popísal Ty, používam btnXXX.Enabled := T/F.
  • je dobré/vhodné, aby užívateľ videl všetky možnosti ktoré sú k dispozícii
  • vlastnosť Visible pri automatickom zarovnávaní mení polohu komponentov. To potom spôsobuje problémy
  • používam Action napojené na Button. Neviem či to tu je podporované
Tebou uvedený kód by som upravil nasledovne
Kód: [Vybrat]

procedure TForm1.UpdateHdrButtons;
begin
//  btnMenu.Visible := not Tabs.ActiveTab = Detail;
  btnBack.Visible := Tabs.ActiveTab = Detail;
  btnDone.Visible := Tabs.ActiveTab = Detail;
//  btnAdd.Visible := not Tabs.ActiveTab = Detail;
.
alebo
.
procedure TForm1.UpdateHdrButtons;
var
  bVisible: Boolean;
begin
  bVisible := Tabs.ActiveTab = Detail;
//  btnMenu.Visible := not bVisible;
  btnBack.Visible := bVisible;
  btnDone.Visible := bVisible;
//  btnAdd.Visible := bVisible;
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline tomak586

  • Nováček
  • *
  • Příspěvků: 16
  • Karma: 1
Re:Show/Hide tlacitek v toolbar
« Odpověď #2 kdy: 07-08-2019, 01:16:46 »
Ahoj, jak jsem ti psal že použivám layouty, tak ja dávám visible celým layoutum. Tak jsem zkusil rychlou apku kde mam Toolbar a TabControl a tri tlacitka a vse mi funguje jak na androidu 8 tak na iPhone.

  if TabControl1.ActiveTab = TabItem1 then
  begin
    Button1.Visible := False;
    Button2.Visible := False;
    Button3.Visible := True;
  end
  else
  begin
    Button1.Visible := True;
    Button2.Visible := True;
    Button3.Visible := False;
  end;

Jediný co mě napadá je jak mas umistěný ten Toolbar, jestli ti ho něco nepřekrývá.

Offline raul

  • Hrdina
  • ****
  • Příspěvků: 274
  • Karma: 15
    • Verze Delphi: FPC :D
Re:Show/Hide tlacitek v toolbar
« Odpověď #3 kdy: 07-08-2019, 09:13:14 »
Nakonec jsem to udelal taky pres tabcontrol - prepinam dva taby kazdy se dvema ikonkami. Jednak mi ten kod s visible tlacitek trval dlouho a druhak jsem to proste nerozbehal. Pak - potom co jsem to mel komplet predelany - jsem si vsiml, ze na toolbaru bylo controltype platform, ale vsude jinde je styled. Tak to mozna bylo tim, nevim. Tak ci tak, obycejne prehozeni viditelnosti trvalo docela dlouho (cca 1/2 - 1s), kdezto prave prepinani tabu mi chodi pekne rychle, takze radeji takto. (Jinak testuju na Xiaomi Mi 9 (6/128), pripadne pak na starym sony z5 dual, ale tam o hodne mene, trva upload :) )
Lazarus 1.6.3:), FPC, Intel/Arm, Windows/Linux