Autor Beitrag
whitef
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 202
Erhaltene Danke: 1

Windows X
Delphi XE X
BeitragVerfasst: Di 25.09.07 13:44 
hi,
hab da mal wieder ne kleine frage:

wie kann ich popups einfärben?
standard popups sind ja gewöhnlicherweise grau, mit schwarzer schrift und blauem mouseover effekt.
ich wollte aba gerne das mein popup einen schwarzen hintergrund hat und die schrift weiss ist, der mousover sollte dann grau sein.
Am besten ist es, wenn ich ales hintergrund ein bild nehmen könnte!

ich habe schon nach diversen komponenten ausschau gehalten, aber nirgends was gefunden.

Könnt ihr mir helfen?
Coder
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1383
Erhaltene Danke: 1

WinXP
D2005 PE
BeitragVerfasst: Di 25.09.07 14:23 
Im Event OnDrawItem oder OnAdvancedDrawItem eines PopupItems müsstest du das Item selbst mit Canvas zeichnen können.
Einfacher:
Mach dir doch eine Form, welche beim Rechtsklick an der Mausposition aufpoppt.
whitef Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 202
Erhaltene Danke: 1

Windows X
Delphi XE X
BeitragVerfasst: Di 25.09.07 15:12 
oh man des is doch auch *mist*e, hab gar kein plan wie das mit canvas geht und mit ner neuen form, find ich keinen OnMouseExit oder ähnliches damit das popup zu geht, wenn man doch nichts auswählt.
Des Weiteren weiss ich auch gar nicht wie man das dann genau an dieser position anzeigen lassen kann...

Das funktioniert auf jeden fall net mehr:


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var

  P: TPoint;
begin
  P := ClientToScreen(Point(Button1.Left + Button1.Width div 1,
                            Button1.Top + Button1.Height div 1));
  PopupMenu1.Popup(P.X, P.Y);


Moderiert von user profile iconGausi: Delphi-Tags hinzugefügt
Coder
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1383
Erhaltene Danke: 1

WinXP
D2005 PE
BeitragVerfasst: Di 25.09.07 17:16 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if button = mbright then
  begin
    Form2.Left := Mouse.CursorPos.X;
    Form2.Top := Mouse.CursorPos.Y;
    Form2.Show;
  end;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
  Form2.Hide;
end;
whitef Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 202
Erhaltene Danke: 1

Windows X
Delphi XE X
BeitragVerfasst: Di 25.09.07 21:08 
Vielen Dank für die sehr informative Informationen!!

Die sind perfekt, funktioniert wunderbar!!!

Aber eins muss ich jetzt noch fragen.
Bei deiner Variante öffnet sich die Form an der Position, an der sich der Cursor befindet, gibt es da auch ne variante, wo sich die Form dann immer an der selber position (beim Button, der die Form öffnet) öffnet.


(ps: das mit dem form.hide hätt ich auch selber drauf kommen.... manchmal.... aiaiai)


mfg
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Di 25.09.07 21:13 
X und Y kannst Du doch selbst bestimmen.

_________________
Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
Coder
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1383
Erhaltene Danke: 1

WinXP
D2005 PE
BeitragVerfasst: Mi 26.09.07 00:30 
user profile iconwhitef hat folgendes geschrieben:
Bei deiner Variante öffnet sich die Form an der Position, an der sich der Cursor befindet, gibt es da auch ne variante, wo sich die Form dann immer an der selber position (beim Button, der die Form öffnet) öffnet

so ungefähr
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm1.Button1Click(Sender: TObject);
var
  p: TPoint;
begin
  p := point(Button1.Left, Button1.Top + Button1.Height);
  p := Form1.ClientToScreen(p);
  Form2.Left := p.X;
  Form2.Top := p.Y;
  Form2.Show;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
  Form2.Hide;
end;

ungetestet. hab grad kein delphi