| Autor |
Beitrag |
D. Annies
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Do 23.04.09 11:16
Hi, Delpher,
ich habe das folgende Problem:
Die Groupbox6 nimmt, je nachdem, die Groupbox4, Splitter1 und Groupbox2 auf
oder
das tntStringgrid3 und die Groupbox12 auf.
Gesteuert wird das von dem Button49, wie man sieht.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| procedure TForm1.Button49Click(Sender: TObject); begin if button49.Caption = 'klein' then begin groupbox2.Visible := false; splitter1.Visible := false; groupbox4.Visible := false; groupbox8.Parent := groupbox6; groupbox8.setbounds(0,0,groupbox6.Width,groupbox6.Height-95); tntstringgrid3.setbounds(0,37,groupbox8.Width,groupbox8.Height-40); groupbox12.Parent := groupbox6; groupbox12.setbounds(2,groupbox6.height-95,groupbox6.Width,90); button49.SetBounds(groupbox8.Width-65,8,36,25); button49.caption := 'groß'; end else if button49.Caption = 'groß' then begin groupbox8.Parent := form1; groupbox8.setbounds(0,0,form1.Width,form1.Height-135); tntstringgrid3.setbounds(0,37,form1.Width,form1.Height-170); groupbox12.Parent := form1; groupbox12.setbounds(2,form1.height-135,form1.Width,70); button49.SetBounds(groupbox8.Width-65,8,36,25); button49.caption := 'klein'; end; groupbox8.Visible := true; groupbox12.Visible := true; end; |
Ich möchte nun eigentlich den Button49 in die Groupbox6 legen, um damit auch die Groß/Klein- Möglichkeit für die Groupbox4, Splitter1 und Groupbox2 haben zu können.
@all_the_bastler: Wie kann man das "einfach" (elegant) gestalten?
Gruß, Detlef
_________________ ut vires desint, tamen est laudanda voluntas
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Do 23.04.09 11:29
Moderiert von Narses: Komplett-Zitat des letzten Beitrags entfernt.
Als erstes sollten wir hierzu den Code umsortieren:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| procedure TForm1.Button49Click(Sender: TObject); begin if button49.Caption = 'klein' then begin groupbox8.Parent := groupbox6; groupbox8.setbounds(0,0,groupbox6.Width,groupbox6.Height-95); tntstringgrid3.setbounds(0,37,groupbox8.Width,groupbox8.Height-40); groupbox12.Parent := groupbox6; groupbox12.setbounds(2,groupbox6.height-95,groupbox6.Width,90); button49.SetBounds(groupbox8.Width-65,8,36,25); button49.caption := 'groß';
groupbox2.Visible := false; splitter1.Visible := false; groupbox4.Visible := false; end else if button49.Caption = 'groß' then begin groupbox8.Parent := form1; groupbox8.setbounds(0,0,form1.Width,form1.Height-135); tntstringgrid3.setbounds(0,37,form1.Width,form1.Height-170); groupbox12.Parent := form1; groupbox12.setbounds(2,form1.height-135,form1.Width,70); button49.SetBounds(groupbox8.Width-65,8,36,25); button49.caption := 'klein'; end;
groupbox8.Visible := true; groupbox12.Visible := true; end; |
Nach dem Markieren der Unterschiede fällt auf: Da unterscheided sich nicht viel
Also, vereinfachen wir das mal mit IIf (Trinär-Operator unter C):
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure TForm1.Button49Click(Sender: TObject); var Klein: Boolean; TargetCtrl : TWinControl; begin Klein := button49.Caption = 'klein'; if Klein then Begin groupbox2.Visible := false; splitter1.Visible := false; groupbox4.Visible := false; end; TargetCtrl := TWinControl(IIf(klein, groupbox6, Form1));
groupbox8.Parent := TargetCtrl; groupbox8.setbounds(0,0,TargetCtrl.Width,TargetCtrl.Height-IIf(klein,95,135)); tntstringgrid3.setbounds(0,37,groupbox8.Width,groupbox8.Height-IIf(klein,40,170)); groupbox12.Parent := TargetCtrl; groupbox12.setbounds(2,TargetCtrl.height-IIf(klein,95,135),TargetCtrl.Width,IIf(Klein,70,90)); button49.SetBounds(groupbox8.Width-65,8,36,25); button49.caption := IIf(klein, 'groß', 'klein');
groupbox8.Visible := true; groupbox12.Visible := true; end; |
Tipp: Benenn mal deine Komponenten besser!
Edit: Vergessen paar Magic Numbers anzupassen ...
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Do 23.04.09 19:17
Hi, Benny,
komme erst jetzt dazu, wieder "rein" zu gucken - da hätte ich ja fast drauf warten können, auf deine Antwort...
Eine Anleihe bei C - sehr interessant!
Danke erstmal für deine Mühe,
Detlef
_________________ ut vires desint, tamen est laudanda voluntas
|
|
Tastaro
      
Beiträge: 414
Erhaltene Danke: 23
|
Verfasst: Fr 24.04.09 10:43
Und warum ist der Code dadurch einfacher?
Einfacher zu lesen ist er auf keinen Fall.
Wobei er schon am Anfang nicht sehr leserlich war, weil mehrere Anweisungen in eine Zeilen gestopft wurden.
Beste Grüße
Tastaro
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Fr 24.04.09 11:04
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Sa 25.04.09 09:29
Ich habe doch wirklich nur mehrere Anweisungen in eine Zeile geschrieben, wenn diese seehr harmlos sind.
Gruß, Detlef
_________________ ut vires desint, tamen est laudanda voluntas
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 25.04.09 10:08
D. Annies hat folgendes geschrieben : | | Ich habe doch wirklich nur mehrere Anweisungen in eine Zeile geschrieben, wenn diese seehr harmlos sind. |
Harmlos oder nicht, es macht den Code unübersichtlich und schlechter lesbar.
|
|
Robert.Wachtel
      
Beiträge: 895
Erhaltene Danke: 7
Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
|
Verfasst: Sa 25.04.09 11:41
|
|
D. Annies 
      
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: So 26.04.09 22:06
Hi Robert,
und Benny oder jaenicke zeigen mir auf, was man beachten sollte - das hilft wirklich weiter, so dass man es beim nächsten Mal besser macht / machen kann.
in diesem Sinne danke
Detlef
_________________ ut vires desint, tamen est laudanda voluntas
|
|
|