AGB  ·  Datenschutz  ·  Impressum  







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

Rahmen um Label

Ein Thema von Hansa · begonnen am 29. Jan 2007 · letzter Beitrag vom 5. Mär 2009
Antwort Antwort
Seite 3 von 5     123 45      
IngoD7

Registriert seit: 17. Feb 2004
464 Beiträge
 
Delphi 7 Enterprise
 
#21

Re: Rahmen um Label

  Alt 30. Jan 2007, 14:01
Mache erstmal den Rand so groß, dass man ihn auch vernünftig sieht (siehe Code). Die Reihenfolge der späteren Anzeige (also dass das Label auf dem Rectangel liegt) kannst du beeinflussen, indem du das Label zuletzt noch einmal refreshed.

Delphi-Quellcode:
begin
 with Sender as TLabel do begin
      Color := clSkyBlue;
      Font.Color := clNavy;
   end;
//showmessage ('KJHJK');
 Canvas.Pen.Width := 2;
 Canvas.Pen.Color :=clBlue;
 Canvas.Rectangle ((Sender as TLabel).Left-5,(Sender as TLabel).Top-5,
                   (Sender as TLabel).Left + (Sender as TLabel).Width+5,
                   (Sender as TLabel).Top+(Sender as TLabel).Height+5);
 (Sender as TLabel).Refresh;
end;
Wie willst du bei diesem Konstrukt den Rahmen eigentlich wieder wegmachen, wenn die Maus das Label verlässt?
  Mit Zitat antworten Zitat
marabu

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

Re: Rahmen um Label

  Alt 30. Jan 2007, 14:42
Hallo,

ein Verbesserungsvorschlag:

Delphi-Quellcode:
procedure TDemoForm.Decorate(l: TLabel; entering: Boolean);
const
  PENWIDTH = 2;
var
  r: TRect;
begin
  Canvas.Pen.Width := PENWIDTH;
  if entering
    then Canvas.Pen.Color := clHighLight
    else Canvas.Pen.Color := Color;
  r := l.BoundsRect;
  InflateRect(r, PENWIDTH, PENWIDTH);
  Canvas.Rectangle(r);
  Canvas.Pen.Width := 1;
  l.Refresh;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.891 Beiträge
 
Delphi 12 Athens
 
#23

Re: Rahmen um Label

  Alt 30. Jan 2007, 15:24
Zitat von Hansa:
Ne, Brush bezieht sich auf die Form.
???
Kann Dir hier nicht ganz folgen. Was meinst Du damit?


Gruß

Thomas
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
IngoD7

Registriert seit: 17. Feb 2004
464 Beiträge
 
Delphi 7 Enterprise
 
#24

Re: Rahmen um Label

  Alt 30. Jan 2007, 17:01
Zitat von onlinekater:
Zitat von Hansa:
Ne, Brush bezieht sich auf die Form.
???
Kann Dir hier nicht ganz folgen. Was meinst Du damit?
Mach dir nichts draus - er kann sich manchmal selbst nicht ganz folgen.

Das von dir vorgeschlagene Canvas.Brush.Style:=bsClear funktioniert sehr gut. Es erspart zudem das Label.Refresh (war eh nur 'ne Trickserei) und ermöglicht damit das ungefährdete Neuzeichnen (und damit das "Ausblenden") des Rectangels (mit Farbe BtnFace) beim Verlassen des Labels mit der Maus.

Wenn die Labels jetzt weit genug entfernt von anderen Dingen auf der Form liegen, so dass der Rahmen nichts übermalt, ist's gut, andernfalls muss das Übergemalte neu gezeichnet werden. Das würde pauschal ein Form.Refresh am Ende der LabelMouseLeave-Routine erledigen.


//Nachtrag:
Wie früher schonmal sinngemäß angedeutet, wird ein 2 Pixel dicker Rahmen um ein Label auch erst sichtbar, wenn man ihn 2 Pixel größer als das Label macht. Also so:
Delphi-Quellcode:
Canvas.Rectangle ((Sender as TLabel).Left-2,(Sender as TLabel).Top-2,
                 (Sender as TLabel).Left + (Sender as TLabel).Width+2,
                 (Sender as TLabel).Top+(Sender as TLabel).Height+2);
Letzteres wird von marabus Vorschlag möglicherweise auch schon berücksichtigt. Aber zur Verabschaulichung bleibe ich hier noch bei der "aufgelösten" Version.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#25

Re: Rahmen um Label

  Alt 30. Jan 2007, 19:10
Zitat von IngoD7:
Zitat von onlinekater:
Zitat von Hansa:
Ne, Brush bezieht sich auf die Form.
???
Kann Dir hier nicht ganz folgen. Was meinst Du damit?
Mach dir nichts draus - er kann sich manchmal selbst nicht ganz folgen.
Wenn ihr Delphi nicht folgen könnt, dann kann ich auch nichts dafür. So geht das :

Delphi-Quellcode:
procedure TfrmKey.lblMouseEnter(Sender: TObject);
var Rechteck : TRect;
begin
  with Sender as TLabel do begin
    Color := clSkyBlue;
    Font.Color := clBlack;
  end;
//showmessage ('KJHJK');
  Canvas.Pen.Width := 12;
  Canvas.Pen.Color :=clBlue;
  Canvas.Rectangle ((Sender as TLabel).Left,(Sender as TLabel).Top,
                   (Sender as TLabel).Left + (Sender as TLabel).Width,
                   (Sender as TLabel).Top+(Sender as TLabel).Height);
end;
Alles andere ist einfach zuviel und überflüssig.
Gruß
Hansa
  Mit Zitat antworten Zitat
IngoD7

Registriert seit: 17. Feb 2004
464 Beiträge
 
Delphi 7 Enterprise
 
#26

Re: Rahmen um Label

  Alt 30. Jan 2007, 21:35
Zitat von Hansa:
Alles andere ist einfach zuviel und überflüssig.
Du bist der wahre Bastler vor dem Herrn.

Erst erklärst du, dass du nur eine halbwegs brauchbare Ausgabe hinbekommst, wenn du ein Krücken-ShowMessage einbaust ...
Zitat von Hansa:
Wichtig wäre jetzt erstmal zu wissen, wie das showmessage wegzubekommen ist. Das ist lästig und es könnte Quereffekte hervorrufen.
... und dann fällt dir nichts besseres ein, als deine Rahmendicke auf jenseits von Gut und Böse zu schrauben.

Dabei ignorierst du alle Fakten, Gedanken und Lösungsansätze, die Andere hier bei der Besprechung deines Problems angebracht haben und präsentierst eine "Lösung", die nichts besser funktioniert, als was du davor auch zustande gebracht hattest.

Und mittendrin stelltest du Fragen, aufgrund derer ich ernsthaft befürchtete, deine Online-Hilfe sei völlig ausgefallen.

Naja, es ist schade, aber ich bekomme immer öfter das Gefühl, bei dir einfach nur für die Tonne zu schreiben. Aber gut, das ist mein Problem.

Da du Delphi ja so sehr gut folgen kannst , erkläre doch mal, was passiert, wenn du bei deinem Code zum zweiten mal die Maus über das Label fährst. Bei D7 unter XP sieht man nur noch Schrott.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#27

Re: Rahmen um Label

  Alt 30. Jan 2007, 21:57
mach mal etwas halblang. Was soll das hier denn :

Zitat von IngoD7:
..Erst jammerst du rum, dass du nur eine halbwegs lesbare Ausgabe hinbekommst, wenn du ein Krücken-ShowMessage einbaust ...Dabei ignorierst du alle Fakten, Gedanken...deine Online-Hilfe sei völlig ausgefallen...Aber gut, das ist mein Problem...
Zu letzterem : so ist es. Zu dem davor : das Krücken-showmessage hat mich gestört und keiner hat etwas gesagt, was zu tun ist, um es überflüsig zu machen. Ich habe refresh, repaint, und die anderen Vorschläge sehr wohl ausprobiert. In der OH habe ich sogar das mir bisher nicht bekannte FrameRect entdeckt und auch das getestet. Und mit den dicken Rahmen, da habe ich das so gemacht wie es wohl jeder machen würde. Es muss notfalls ein gewisser Effekt provoziert werden und zwar deutlich sichtbar !

Zitat von IngoD7:
..Da du Delphi ja so sehr gut folgen kannst , erkläre doch mal, was passiert, wenn du bei deinem Code zum zweiten mal die Maus über das Label fährst. Bei D7 unter XP sieht man nur noch Schrott.
Ja, kann der Delphi-Logik schon folgen, aber laut Dir angeblich nicht. 8)

P.S.: das ganze läuft jetzt unter D7 und XP ohne Schrott auf 100 ??? (eher mehr) Forms.

Edit : ist das hier nicht klar ?

Zitat von IngoD7:
..erkläre doch mal, was passiert, wenn du bei deinem Code zum zweiten mal die Maus über das Label fährst. Bei D7 unter XP sieht man nur noch Schrott.
Das wird umgekehrt rum im OnMouseLeave erledigt !! Für die Nachwelt :
Delphi-Quellcode:
procedure TfrmKey.lblMouseLeave(Sender: TObject); // falls Maus nicht über Label : zurücksetzen
begin
  with Sender as TLabel do begin
    Color := clInfoBk;
    Font.Color := clBlack;
  end;
  Canvas.Pen.Width := PinselBreite;
  Canvas.Pen.Color := Color;
  Canvas.Rectangle ((Sender as TLabel).Left+1,(Sender as TLabel).Top+1,
                   (Sender as TLabel).Left + (Sender as TLabel).Width,
                   (Sender as TLabel).Top+(Sender as TLabel).Height);
end;
Gruß
Hansa
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.891 Beiträge
 
Delphi 12 Athens
 
#28

Re: Rahmen um Label

  Alt 30. Jan 2007, 22:05
@Hansa: Es wäre dennoch sehr freundlich, wenn DU einmal meine Frage beantworten würdest, statt mir an den Kopf zu werfen, ich könne Delphi nicht folgen.
Auch ich gehöre zu denjenigen, die Ihr Geld damit verdienen, mit Delphi Lösungen zu erarbeiten. Könnte ich Delphi nicht folgen, so müßte ich schlichtweg verhungern.

Gruß

Thomas
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#29

Re: Rahmen um Label

  Alt 30. Jan 2007, 22:14
Das hier ist die einzige Frage, die ich sehe :

Zitat von onlinekater:
Zitat von Hansa:
Ne, Brush bezieht sich auf die Form.
???
Kann Dir hier nicht ganz folgen. Was meinst Du damit?
Was soll ich darauf antworten ? Kann nur sagen, dass ein TLabel kein Brush kennt. Insofern konnte ich Dir nicht folgen.
Gruß
Hansa
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.891 Beiträge
 
Delphi 12 Athens
 
#30

Re: Rahmen um Label

  Alt 30. Jan 2007, 22:23
Zitat von Hansa:
Kann nur sagen, dass ein TLabel kein Brush kennt.
Dann möchte ich doch mal gerne wissen, wie Du zu der tollen Aussage kommst, daß Brush zur Form gehört.
Brush gibt es weder direkt in TLabel noch in TForm, sondern ist Bestandteil des Canvas, den nun wieder beide Komponenten haben.

Ich finde es sehr schade, daß Du Dir nicht einmal in von Dir selbst erstellten Threads die Mühe machst, die Antworten die man Dir gibt richtig durchzuarbeiten. Spätestens Delphi-Referenz durchsuchenTCanvas.Rectangle hätte Dir nach meinem Einwand die Erklärung gebracht.

Ich verabschiede mich jetzt einigermaßen gefrustet aus Diesem Thread und hoffe, dass er nicht wie viele andere Threads, in denen Du mitgewirkt hast in einen unsachlichen Krieg mündet.

Gruß

Thomas
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 5     123 45      


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:01 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