AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Farbe eine PopUpMenu ändern

Ein Thema von eddy · begonnen am 25. Nov 2005 · letzter Beitrag vom 26. Nov 2005
Antwort Antwort
Benutzerbild von eddy
eddy

Registriert seit: 4. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#1

Farbe eine PopUpMenu ändern

  Alt 25. Nov 2005, 23:10
Hallo Leute,

ich möchte die Hintergrundfarbe eines PopUpMenu ändern.

Hintergrund:

bei DBGrid.OnTitelClick wird ein anderes PopUpMenu aufgerufen als in den Datenzeilen.
In dem PopUpMenu der Titelzeile kann man u.a. die gespeicherten Einstellungen für die Tabellenspalten löschen, in dem PopUpMenu für die Datenzeilen kann man einen einzelnen Datensatz aus dem Datenbestand löschen.

Nun gibt es natürlich Nutzer, die das eine Menü nicht vom anderen unterscheiden können, und statt dem Datensatz, den sie löschen wollen, die Tabellenspalten-Definitionen löschen, mich dann anrufen, weil in dem DBGrid plötzlich alle Felder in der Standardbreite angezeigt werden und nerven, daß das Programm nicht geht. Warntexte vor dem Löschen helfen nicht weiter, da diese ohne gelesen zu werden übergangen werden.

Nun möchte ich das PopUpMenu der Titelzeile farblich (grell Rot oder so) anders darstellen, damit dieser Unsinn endlich aufhört, und ich nicht ständig damit beschäftigt bin, die Bedienfehler zu korrigieren.

Ein hilfreicher Link oder passender Quelltext wären toll.

mfg
eddy
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: Farbe eine PopUpMenu ändern

  Alt 26. Nov 2005, 00:25
Hi,
ich kann dir zwar nur sehr bedingt helfen, aber vielleicht reicht es ja als Anstoss in die Richtige Richtung.
Setz einfach im PopUp-Menü OwnerDraw auf True. Nun kannst du für alle Einträge des PopUp-Menüs, die du färben möchtest einfach das OnDraw-Ereignis mit Code füllen und hier natürlich auch färben.
Sehr einfaches Beispiel:

Delphi-Quellcode:
procedure TForm1.Blubb1DrawItem(Sender: TObject; ACanvas: TCanvas;
  ARect: TRect; Selected: Boolean);
begin
  ACanvas.Brush.Color := clRed;
  ACanvas.FillRect(ARect);
  ACanvas.TextOut(ARect.Left + 2, ARect.Top + 2, 'TEST');
end;
Würde dir jetzt einen roten Eintrag erzeugen, auf dem Test (sehr schlecht eingerückt) steht. Das genaue einrücken vom Text kannst du natürlich durch TextWidth und TextHeight (Methoden vom Canvas) und berechnen der Mittelpunkte o.ä. erreichen. Weiß ja nicht ob die Links oder Rechtsbündig oder Zentriert angezeigt werden sollen. Na ja, dass bekommst du dann schon hin.

Hoffe es hilft schon mal
Gruß Der Unwissende
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Farbe eine PopUpMenu ändern

  Alt 26. Nov 2005, 07:40
Zitat von eddy:
... Warntexte vor dem Löschen helfen nicht weiter, da diese ohne gelesen zu werden übergangen werden. ...
Hei eddy,

wenn die Anwender schon nicht lesen wollen würden sie sicher auch nicht auf verschiedene Farben achten
Ich würde das PopUp für die Titelleiste nur dan aufraufen wenn der Mausklick bei gedrückter Ctrl-Taste erfolgte. Dann bist Du sicher das der Anwender die Aktion bewusst ausgelöst hat.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von eddy
eddy

Registriert seit: 4. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#4

Re: Farbe eine PopUpMenu ändern

  Alt 26. Nov 2005, 11:43
Hallo "Der Unwissende",

auf jeden Fall wußtest Du, wie man dieses Problem angehen könnte.

Kannst Du mir auch noch verraten, wie ich an OnDrawItem für die Standard-PopUpMenu herankomme?

Mein TPopUpMenu kennt nur OnChange und OnPopUp aber eben kein OnDrawItem.

Ich habe die Prozedur zwar in Public deklariert, aber sie wird nie verwendet.



Hallo Sharky,

der Nutzer, um den es hier konkret geht, ist nicht mehr der jüngste und hat so seine Schwierigkeiten mit dem Lesen der Bildschirmausschriften (17" Monitor bei 800 x 600, obwohl ich mein Programm ursprünglich nur für 1024 x 768 ausgelegt hatte). Mit farbigen Buttons habe ich schon gute Erfahrungen gemacht.

mfg
eddy
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#5

Re: Farbe eine PopUpMenu ändern

  Alt 26. Nov 2005, 11:47
Zitat von eddy:
Hallo "Der Unwissende",

auf jeden Fall wußtest Du, wie man dieses Problem angehen könnte.

Kannst Du mir auch noch verraten, wie ich an OnDrawItem für die Standard-PopUpMenu herankomme?

Mein TPopUpMenu kennt nur OnChange und OnPopUp aber eben kein OnDrawItem.

Ich habe die Prozedur zwar in Public deklariert, aber sie wird nie verwendet.
OnDrawItem ist bei TMenuItem deklariert, nicht bei TPopupMenu Also im Popup-Editor einen Eintrag auswählen und dann OnDrawItem zuweisen.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Farbe eine PopUpMenu ändern

  Alt 26. Nov 2005, 11:59
Zitat von eddy:
... der Nutzer, um den es hier konkret geht, ist nicht mehr der jüngste und hat so seine Schwierigkeiten mit dem Lesen der Bildschirmausschriften ...
Hai eddy,

alles klar. Also dann doch einfärben.

Hier mal ein etwas angepasstest Beispiel.
Delphi-Quellcode:
procedure TForm1.Vier1DrawItem(Sender: TObject; ACanvas: TCanvas;
  ARect: TRect; Selected: boolean);
var
  mycaption: string;
  myrect: TRect;
begin
  mycaption := (Sender as TMenuItem).Caption;
  with ACanvas do
  begin
    if (Selected) then
    begin
      Brush.Color := clgreen;
    end
    else
    begin
      Brush.Color := clRed;
    end;
    FillRect(ARect);
    myRect := ARect;
    myRect.Left := myRect.Left + 5;
    DrawText(Handle, PChar(mycaption), Length(mycaption),
      myRect, DT_SINGLELINE or DT_VCENTER);
  end;
end;
Einfach allen Einträgen des PopUpMenüs das selbe OnDrawItem zuweisen und *blubb*
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von eddy
eddy

Registriert seit: 4. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#7

Re: Farbe eine PopUpMenu ändern

  Alt 26. Nov 2005, 15:00
Hier nun mein Dank für die Hilfe bei der Lösung des Problems. :cheers:

Hallo jim_raynor,

ich falle immer auf so böse Fallen hinein :oops: , auch wenn es ja eigentlich logisch ist. Schließlich heißt es ja DrawItem und nicht DrawMenu.


Hallo Sharky,

das Beispiel paßt prima. Ich habe alle Anweisungen befolgt, noch ein bisschen die Farben für Hintergrund und Font angepaßt und bin jetzt voller Hoffnung, daß das in Aqua gehaltene Menü doch irgendwie meine Nutzer ein wenig von wildem gedankenfreien Herumclicken zurück hält.

mfg
eddy
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 07:26 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