AGB  ·  Datenschutz  ·  Impressum  







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

Panel wird nicht richtig gezeichnet

Ein Thema von Hansa · begonnen am 13. Mär 2007 · letzter Beitrag vom 15. Mär 2007
Antwort Antwort
Seite 1 von 2  1 2      
Hansa

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

Panel wird nicht richtig gezeichnet

  Alt 13. Mär 2007, 13:27
Hi,

wieso wird hier :

Delphi-Quellcode:
procedure TfrmKeyTest1.PanelEnter(Sender: TObject);
begin
  if (Sender is TPanel) then begin
    (Sender as TPanel).Color := clSkyBlue;
    Canvas.Pen.Color := clNavy; // Rahmen-Schriftfarbe
    Canvas.Pen.Width := PinselBreite;
    Canvas.Rectangle ((Sender as TPanel).Left-1,
                      (Sender as TPanel).Top-1,
                      (Sender as TPanel).Left + (Sender as TPanel).Width+2,
                      (Sender as TPanel).Top + (Sender as TPanel).Height+2);
  end;
end;
das Panel gefäbt und angezeigt, die Umrandung mit dem Rectangle jedoch nicht ? Und zwar nur beim Programmstart ! Wird das Panel kurz verlassen dann wird es anschließend mit Umrandung gezeichnet.

Im FormShow steht noch das :

Delphi-Quellcode:
Panel1.Show;
Panel1.SetFocus;
Nützt aber nichts. Das PanelEnter wird übrigens auch beim Programmstart durchlaufen (Color wird da ja auch richtig gesetzt).
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von yörsch
yörsch

Registriert seit: 10. Jan 2007
Ort: Lampertheim
206 Beiträge
 
Delphi XE2 Architect
 
#2

Re: Panel wird nicht richtig gezeichnet

  Alt 13. Mär 2007, 13:44
Moin Moin, Gibt´s einen Grund warum gegade NUR bei Enter die Umrandung gemacht werden soll...
versuchsmal zusätzlich mit weiteren Ereignissen wie clicked, ....
Ich weiß das Enter reichen sollte aber aus anderen hochsprachen kenne ich noch onFocus das gibt´s aber hier nicht...
Jörg
have FUN
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Panel wird nicht richtig gezeichnet

  Alt 13. Mär 2007, 13:47
Hi Hansa,

ich habe Doenter überschrieben und es klappt alles.

Delphi-Quellcode:
procedure TBaseSeyControl.DoEnter;
begin
  Selected := True;
  inherited DoEnter;
end;

procedure TBaseSeyControl.DoExit;
begin
  Selected := False;
  inherited DoExit;
end;
Das Zeichnen mach ich aber im Paint!!! Ich zeichne einen Rahmen um die Compo bei select und und bei DoExit wird bei mir der Rahmen gelöscht. Kein Problem.

Selected ist bei mir:
Delphi-Quellcode:
  property Selected : Boolean read FSelected write SetSelected;

procedure TBaseSeyControl.SetSelected(const Value: Boolean);
begin
  FSelected := Value;
  IF FSelected then
    FFrameColor := clBlue
  else
    FFrameColor := clBlack;
  Invalidate;
end;
Gruß oki
  Mit Zitat antworten Zitat
IngoD7

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

Re: Panel wird nicht richtig gezeichnet

  Alt 13. Mär 2007, 14:16
Zitat von Hansa:
Hi,

wieso wird hier :

Delphi-Quellcode:
procedure TfrmKeyTest1.PanelEnter(Sender: TObject);
begin
  if (Sender is TPanel) then begin
    (Sender as TPanel).Color := clSkyBlue;
    Canvas.Pen.Color := clNavy; // Rahmen-Schriftfarbe
    Canvas.Pen.Width := PinselBreite;
    Canvas.Rectangle ((Sender as TPanel).Left-1,
                      (Sender as TPanel).Top-1,
                      (Sender as TPanel).Left + (Sender as TPanel).Width+2,
                      (Sender as TPanel).Top + (Sender as TPanel).Height+2);
  end;
end;
das Panel gefäbt und angezeigt, die Umrandung mit dem Rectangle jedoch nicht ? Und zwar nur beim Programmstart !
Weil Windows sich - warum auch immer - entschieden hat, deine Form nach dem Aufbringen des Rectangels nochmal zu zeichnen (oder überhaupt erst fertig zu zeichnen). Dieses Zeichnen geschieht dann ohne Rectangel.

Baue mal irgendwo ein kleinen Button ein mit OnClick --> Form.Repaint. Nach einem Repaint ist dein Rectangel auch weg. Ebenso, wenn du dein Fenster so weit über den Bildschirmrand verschiebst, dass das Panel (über'n Rand) verschwindet, und dann zurückziehst.

//Nachtrag:
Du baust ja schon ziemlich lange an deiner Rahmengeschichte herum. Mal um Labels, mal um Panels. Wie auch immer.
Ich würde nicht direkt auf dem Canvas der Form herumkleistern, sondern Objekte benutzen, die ich sicht- und unsichtbar machen kann, die ich verschieben kann, etc. Einen Rahmen würde ich mir als TShape erstellen (Eigenschaften Brush, Pen und Shape korrekt setzen, damit es ein Rahmen wird) und bei Bedarf folgendermaßen um das Panel legen:
Delphi-Quellcode:
   shape1.Left:=(Sender as TPanel).Left-PinselBreite;
   shape1.Top:=(Sender as TPanel).Top-PinselBreite;
   shape1.Width:=(Sender as TPanel).Width+2*PinselBreite;
   shape1.Height:=(Sender as TPanel).Height+2*PinselBreite;
   shape1.Show;
Danach hast du keine Probleme mehr mit irgendwelchen Repaints.
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Panel wird nicht richtig gezeichnet

  Alt 13. Mär 2007, 15:56
Zitat von IngoD7:
Einen Rahmen würde ich mir als TShape erstellen
Ich bin mal gespannt, wie dein Vorschlag ankommt: klick

Gruß Hawkeye
  Mit Zitat antworten Zitat
IngoD7

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

Re: Panel wird nicht richtig gezeichnet

  Alt 13. Mär 2007, 18:07
Zitat von Hawkeye219:
Zitat von IngoD7:
Einen Rahmen würde ich mir als TShape erstellen
Ich bin mal gespannt, wie dein Vorschlag ankommt: klick

Das sehe ich nicht so eng. Seinerzeit ging der Vorschlag mit dem TShape schon sehr rechtzeitig im Thread unter. Es ging dann um ein Label mit Rectangel und darum (zumindest in meinen Postings dort), dass das Rectangel auf eine Art und Weise da "reingewürgt" wurde, dass es einem Angst und Bange werden konnte (nicht durchsichtig, erst das Label mal verdeckend, mal darunterliegend, zum Schluss darunter hervorquellend und ggf. die Nachbarkomponenten beim Ausblenden zerstörend).

Jetzt, hier und heute lasse ich mich jedenfalls kein zweites mal auf die Implementierung von Rectangels auf dem Form.Canvas ein. Jetzt sind Shapes dran!
  Mit Zitat antworten Zitat
Hansa

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

Re: Panel wird nicht richtig gezeichnet

  Alt 13. Mär 2007, 18:46
Neue Frage neuer Thread ist nicht immer produktiv, wie man sieht (ja, 3 Threads, die zusammengehören).

Nützt aber jetzt auch nichts mehr.

Zitat von yörsch:
Moin Moin, Gibt´s einen Grund warum gegade NUR bei Enter die Umrandung gemacht werden soll...
Guck dir den Soure im Anhang an, oder die EXE/Screenshots. Enter hat in dem Zusammenhang mit der Taste Enter nichts zu tun. Entweder man ist mit der Maus in der Nähe, dann greift MouseEnter oder man steuert das Ganze über die Tastatur. D.h. man braucht das PanelEnter.
Angehängte Dateien
Dateityp: zip keypro_143.zip (232,0 KB, 3x aufgerufen)
Gruß
Hansa
  Mit Zitat antworten Zitat
IngoD7

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

Re: Panel wird nicht richtig gezeichnet

  Alt 13. Mär 2007, 20:05
Zitat von Hansa:
Neue Frage neuer Thread ist nicht immer produktiv, wie man sieht (ja, 3 Threads, die zusammengehören).
Das mit dem neuen Thread ist m.E. schon völlig in Ordnung.

Hast du (mein) Posting #4 gelesen?
Was sagst du zu den Repaint-Schwierigkeiten?
Was machst du nun?
  Mit Zitat antworten Zitat
Hansa

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

Re: Panel wird nicht richtig gezeichnet

  Alt 13. Mär 2007, 20:20
Zitat von IngoD7:
Hast du (mein) Posting #4 gelesen?
...
Was sagst du zu den Repaint-Schwierigkeiten?
...
Was machst du nun?
Posting #4 und Repaint ? Repaint usw. macht überhaupt nichts.

Was ich jetzt mache ? Vorerst nichts, höchstens auf Gegenfragen antworten, solange keine konstruktive Antwort kommt.
Gruß
Hansa
  Mit Zitat antworten Zitat
IngoD7

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

Re: Panel wird nicht richtig gezeichnet

  Alt 13. Mär 2007, 20:31
Zitat von Hansa:
Zitat von IngoD7:
Hast du (mein) Posting #4 gelesen?
...
Was sagst du zu den Repaint-Schwierigkeiten?
...
Was machst du nun?
Posting #4 und Repaint ? Repaint usw. macht überhaupt nichts.

Was ich jetzt mache ? Vorerst nichts, höchstens auf Gegenfragen antworten, solange keine konstruktive Antwort kommt.


xxxxxxxxxxxxxxxxxxxxxxxxxx

((Alles noch vorm Abschicken wieder gecanceld.))
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:44 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