| Autor |
Beitrag |
Kay E.
      
Beiträge: 118
|
Verfasst: Do 11.11.10 22:58
Hallo!
Da ihr mir bisher immer so toll helfen konntet, hoffe ich, dass ihr mir auch diesmal wieder helfen könnt.
Und zwar möchte ich in einem PopupMenu eine kleine Statistikübersicht ausgeben. Dabei sollen Links die (verschieden lange) Bezeichner (zum Beispiel "Erfolgsquote:") und rechts die Werte (in dem Fall zum Beispiel 47,05%) stehen. Da die Bezeichner nicht alle gleich lang sind, tu ich mir schwer, die Übersicht wirklich Übersichtlich zu machen. Schön wäre, wenn die Bezeichner links ausgerichtet werden und die Werte rechts ausgerichtet. Im Prinzip so aufgereiht wie die Shortcuts, die man angeben kann.
Habt ihr Vorschläge, wie ich das angehen kann?
Dankeschön schon im Vorraus!
Grüße Kay E.
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 11.11.10 23:17
Wie wäre es mit Tabs? Delphi-Quelltext 1:
| mniTest2.Caption := 'Test'#9'0,30 €'; | Oder wie im Anhang direkt in Delphi eingeben. (Unten siehst du das Ergebnis.)
Einloggen, um Attachments anzusehen!
|
|
Kay E. 
      
Beiträge: 118
|
Verfasst: Do 11.11.10 23:23
Wow, danke für die schnelle Hilfe! Den Befehl "#9" kannte ich noch nicht. Ich hatte schon an Tabs gedacht, wusste aber nciht, wie ich das realisieren sollte.
Vielen Dank!
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 11.11.10 23:27
Das Tab-Zeichen hat den Ascii-Code 9, dementsprechend kannst du dieses so direkt einfügen. Genauso geht es mit anderen Zeichen auch. 
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Do 11.11.10 23:27
ansonsten OwnerDraw=True und bei den Menuitems versorgen von
OnDrawItem oder OnAdvancedDrawItem
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 12.11.10 07:03
Das hätte den Vorteil, dass das ganze besser anpassbar ist, denn die Tabs sind ja kaum beeinflussbar (jedenfalls ohne weiteres). Außerdem kann man dann auch gleich andere grafische Spielereien einbauen.
Am einfachsten ist es aber erst einmal mit Tabs, für den optischen Feinschliff ist immer noch (vielleicht) Zeit.
|
|
Kay E. 
      
Beiträge: 118
|
Verfasst: Fr 12.11.10 11:35
Danke für eure Hilfe. Ich hab das jetzt erstmal mit den Taps gemacht, aber ein bisschen "grafische Würze" wär schon nicht schlecht. Nur hab ich (bis jetzt) noch nie mit OnOwnerDraw und AdvancedOwnerDraw gearbeitet. Allerdings hab ich durchaus Interesse dran, meinen Horizont zu erweitern. Ihr habt mir nicht zufällig grad nen Codeschnippsel rumliegen, damit ich mal sehen kann, was ich damit alles anstellen kann und v.a. wie? Wenn nicht, ist auch nicht schlimm, dann versenk ich mich mal die Weiten des Internets und versuch mir da was anzueignen
Grüße Kay
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Fr 12.11.10 13:04
nur Schmarn, aber
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61:
| unit Unit2;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, ActnList;
type TForm2 = class(TForm) ActionList1: TActionList; Action1: TAction; PopupMenu1: TPopupMenu; I1: TMenuItem; I2: TMenuItem; I3: TMenuItem; procedure I3MeasureItem(Sender: TObject; ACanvas: TCanvas; var Width, Height: Integer); procedure I3AdvancedDrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect; State: TOwnerDrawState); private public end;
var Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.I3AdvancedDrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect; State: TOwnerDrawState); var C:Tcolor; s:String; begin if odSelected in State then c := clBlue else c := clYellow; ACanvas.Brush.Color := c; Acanvas.FillRect(ARect); ACanvas.Brush.Color := clLime; ACanvas.Pen.Color := clRed; ACanvas.Ellipse(Arect.Left + 2,Arect.Top + 2, Arect.Left + 20 ,Arect.Top + 20); s := TMenuItem(Sender).Caption; Acanvas.Brush.Style := bsClear; ACanvas.TextRect(Arect,s,[tfCenter,tfWordBreak]); end;
procedure TForm2.I3MeasureItem(Sender: TObject; ACanvas: TCanvas; var Width, Height: Integer); begin Width := 300; if sender = I1 then Height := 50 else if sender = I2 then Height := 100 else if sender = I3 then Height := 20; end;
end. |
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
Kay E. 
      
Beiträge: 118
|
Verfasst: Mo 15.11.10 16:43
Als ich den Code am WE schnell mal probiert hab, hats nicht funktioniert, ich konnte nicht kompilieren (warum auch immer - keine Fehlermeldung). Ich werds heute oder morgen nochmal probieren. Vielen Dank für den Code und die Mühen!
|
|
|