AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

PopupMenu u. Caption (-)

Offene Frage von "Tau"
Ein Thema von Tau · begonnen am 24. Sep 2005 · letzter Beitrag vom 26. Sep 2005
Antwort Antwort
Tau

Registriert seit: 17. Mär 2003
Ort: Bludenz
221 Beiträge
 
Delphi 7 Enterprise
 
#1

PopupMenu u. Caption (-)

  Alt 24. Sep 2005, 02:20
Hallo zusammen

Möchte in meinem PopupMenu einen Eintrag besonders darstellen.

Menüstruktur z.B.

Ändern
Löschen
Abbrechen
_______________

Alles markieren
_______________

-----Demo------

Wie kann ich es anstellen, dass ich denn Text ( Caption ) verändern
kann und links und rechts vom Text eine durchgezogene
Linie ist wie wenn ich ein (-) Eingebe.

bin langsam am verzweifeln habe leider keinen Ansatz

H I L F E ! ! ! ! ! !

schöne Grüsse
Tau
http://www.quad-offroad.com
wer kämpft kann verlieren aber wer nicht kämpft hat verloren
( Delphi 7 )
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: PopupMenu u. Caption (-)

  Alt 24. Sep 2005, 02:53
Da dürfte wohl nur selber zeichnen helfen. Ich habe mal was gemacht:

Delphi-Quellcode:
procedure TForm1.mitStrich1MeasureItem(Sender: TObject; ACanvas: TCanvas;
  var Width, Height: Integer);
begin
  // etwas breiter machen, damit es nach was aussieht
  Width := Length((Sender as TMenuItem).Caption) + 100;
end;


procedure TForm1.mitStrich1DrawItem(Sender: TObject; ACanvas: TCanvas;
  ARect: TRect; Selected: Boolean);
begin
  // zwei versetzte Linien zeichen für den 3D Effekt
  ACanvas.Pen.Color := clBtnShadow;
  ACanvas.MoveTo(2, ARect.Bottom - ARect.Top div 2 - 3); // - 3 -> Die Linie sitzt etwas zu weit unten
  ACanvas.LineTo(ARect.Right - 2, ARect.Bottom - ARect.Top div 2 - 3); // - 3 -> Die Linie sitzt etwas zu weit unten
  ACanvas.Pen.Color := clWhite;
  ACanvas.MoveTo(2, ARect.Bottom - ARect.Top div 2 - 2);
  ACanvas.LineTo(ARect.Right - 2, ARect.Bottom - ARect.Top div 2 - 2);
  // Und den Text mittig drüber schreiben
  DrawText(ACanvas.Handle, PChar((Sender as TMenuItem).Caption), Length((Sender as TMenuItem).Caption), ARect,
    DT_CENTER);
end;
Du musst nur noch das entsprechenden MenüItem auf OwnerDraw = True stellen und den obigen Code in die entsprechenden Ereignissroutinen kopieren. Ich vermute mal, das soll so was wie eine Überschrift werden, deshalb dachte ich, der 3D Effekt wäre ganz passend.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: PopupMenu u. Caption (-)

  Alt 24. Sep 2005, 07:33
Hi Tau,

ich finde diese Sonderlocken zwar nicht gut, weil sie dem Geist des style guide zuwider laufen, aber extra code musst du nicht unbedingt schreiben. Das hyphen ist nunmal nicht durchgehend, also nimm statt dessen das Zeichen Alt-0151 und alles wird gut.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: PopupMenu u. Caption (-)

  Alt 24. Sep 2005, 13:15
Da finde ich meins aber schöner.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: PopupMenu u. Caption (-)

  Alt 24. Sep 2005, 13:25
@Luckie: an dieser Stelle
ACanvas.MoveTo(2, ARect.Bottom - ARect.Top div 2 - 3); // - 3 -> Die Linie sitzt etwas zu weit unten schon mal darüber nachgedacht, wieso es zu weit unten sitzt? (Tipp: Punkt- und Strichrechnung)

Die korrekte Mitte zwischen Top und Bottom wäre übrigens:
ACanvas.MoveTo(ARect.Left + 2, (ARect.Top + ARect.Bottom) div 2);
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: PopupMenu u. Caption (-)

  Alt 24. Sep 2005, 13:27
Zitat von Flocke:
@Luckie: an dieser Stelle
ACanvas.MoveTo(2, ARect.Bottom - ARect.Top div 2 - 3); // - 3 -> Die Linie sitzt etwas zu weit unten schon mal darüber nachgedacht, wieso es zu weit unten sitzt? (Tipp: Punkt- und Strichrechnung)
Um die Uhrzeit pflege ich nicht mehr zu denken. Danke für den Hinweis.

Ach, weiß noch jemand, wie man das Highlight wegbekommt? Wenn es wirklich eine Art Überschrift werden soll, wäre das wohl auch ganz nett. Man muss dazu wohl dieses andere OwnerDraw Ereignis nehmen, nur ich habe es nicht hinbekommen. Grund siehe oben.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
teebee

Registriert seit: 17. Jan 2003
Ort: Köln
460 Beiträge
 
Delphi 6 Professional
 
#7

Re: PopupMenu u. Caption (-)

  Alt 24. Sep 2005, 13:51
So klappt es:
Delphi-Quellcode:
procedure TForm1.MitLinie1MeasureItem(Sender: TObject; ACanvas: TCanvas;
  var Width, Height: Integer);
begin
  // hier die Breite des Textes bestimmen, und etwas zugeben
  Width := ACanvas.TextWidth((Sender as TMenuItem).Caption)+20;
end;

procedure TForm1.MitLinie1AdvancedDrawItem(Sender: TObject;
  ACanvas: TCanvas; ARect: TRect; State: TOwnerDrawState);
begin
  If Not((odSelected) in State) Then
  Begin
    ACanvas.MoveTo(2,(ARect.Bottom-ARect.Top)Div 2);
    ACanvas.LineTo(ARect.Right-2,(ARect.Bottom-ARect.Top)Div 2);
    DrawText(ACanvas.Handle, PChar(' '+(Sender as TMenuItem).Caption+' '), Length((Sender as TMenuItem).Caption)+2, ARect,
    DT_CENTER);
  End;
end;
Wenn man enabled jetzt noch auf false setzt, kann man das Item weder anklicken, noch wird es 'gehighlighted'.

Gruß, teebee
  Mit Zitat antworten Zitat
Tau

Registriert seit: 17. Mär 2003
Ort: Bludenz
221 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: PopupMenu u. Caption (-)

  Alt 26. Sep 2005, 06:08
Hallo Leute

Danke für die zahlreichen antworten.

Ist genau das was ich gesucht hatte.

Besten Dank

schöne Grüsse
Tau
http://www.quad-offroad.com
wer kämpft kann verlieren aber wer nicht kämpft hat verloren
( Delphi 7 )
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz