Autor Beitrag
Kay E.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 118



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 11.11.10 23:17 
Wie wäre es mit Tabs?
ausblenden 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. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 118



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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. :mrgreen:

Am einfachsten ist es aber erst einmal mit Tabs, für den optischen Feinschliff ist immer noch (vielleicht) Zeit.
Kay E. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 118



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Fr 12.11.10 13:04 
nur Schmarn, aber
ausblenden volle Höhe 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:
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
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  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. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 118



BeitragVerfasst: 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!