Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Fragen zur Komponente TPanel (https://www.delphipraxis.net/140861-fragen-zur-komponente-tpanel.html)

yasR 27. Sep 2009 19:35


Fragen zur Komponente TPanel
 
Hallo,
ich habe zwei Fragen zu der Komponente TPanel. Ist es machbar, die vier Kanten eines Panels abzurunden?
Falls es nicht funktioniert, welche Alternativen gibt es denn, außer das verwenden von TImage?
Desweiteren möchte ich, dass mein Panel bei einem OnClick Event die Farbe verändert. Wie kann man das am besten realisieren?

Lg
yasR

jaenicke 27. Sep 2009 20:21

Re: Fragen zur Komponente TPanel
 
Es gibt noch TShape, wenn es darum geht eine Form auf dem Formular darzustellen.

Die Farbe kannst du via der Eigenschaft Color verändern, das funktioniert natürlich nicht ab XP, wenn der XP Style aktiv ist. Denn dann übernimmt das Betriebssystem ja das Zeichnen.

Helmi 27. Sep 2009 20:29

Re: Fragen zur Komponente TPanel
 
Hallo,

für die abgerundeten Ecken braucht man nur über die Staatsgrenze gehen (am Bodensee gehts), nämlich zu den Schweizern
Es ginge auch das hier von den Schweizern

yasR 28. Sep 2009 07:42

Re: Fragen zur Komponente TPanel
 
danke Helmi, genau das passende ;-)


aber weshalb bekomme ich hier Fehlermeldungen angezeigt? -.-



Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);

const
  bgcolor = $00FFDDEE;
  linecolor = $00554366;
var

  img: array of TImage;
  reg: hrgn;
  i: Integer;
begin

  for i := 0 to ComponentCount - 1 do
  begin
    if Components[i].ClassName = 'TPanel' then
    begin
      setlength(img, Length(img) + 1);
      img[i] := TImage.Create(Self);
      img[i].Width := (Components[i] as TPanel).Width;
      img[i].Height := (Components[i] as TPanel).Height;
      img[i].Parent := (Components[i] as TPanel);
      img[i].Canvas.Brush.Color := bgcolor;
      img[i].Canvas.pen.Color := bgcolor;
      img[i].Canvas.Rectangle(0,0,img[i].Width, img[i].Height);
      img[i].Canvas.pen.Color := linecolor;
      img[i].Canvas.RoundRect(0,0,img[i].Width - 1,img[i].Height - 1,20,20);
      reg := CreateRoundRectRgn(0,0,(Components[i] as TPanel).Width,
        (Components[i] as TPanel).Height, 20,20);
      setwindowrgn((Components[i] as TPanel).Handle, reg, True);
      deleteobject(reg);
    end;
  end;
end;





http://www.bilder-hochladen.net/files/big/cn1k-1.jpg

mleyen 28. Sep 2009 07:48

Re: Fragen zur Komponente TPanel
 
Hast du die Unit ExtCtrls eingebunden?
Ansonsten ist das evtl wieder der Bug in Error Insight.

himitsu 28. Sep 2009 07:53

Re: Fragen zur Komponente TPanel
 
Kannst du das Progrogramm kompilieren und ausführen?
Wenn ja, dann ignorier es einfach
> http://www.delphipraxis.net/internal...049314#1049314

yasR 28. Sep 2009 08:10

Re: Fragen zur Komponente TPanel
 
also ExtCtrls ist auf jeden eingebunden, ich kann es nicht ausführen -.-

mleyen 28. Sep 2009 08:15

Re: Fragen zur Komponente TPanel
 
Welche Fehlermeldung erscheint denn?
Und in welche Zeile springt er?

Was mir gerade aufgefallen ist: 'if Components[i] is TPanel then' dürfte etwas sauberer (und evtl auch sicherer) sein.

yasR 28. Sep 2009 08:40

Re: Fragen zur Komponente TPanel
 
[Pascal Fehler] Unit3.pas(33): E2003 Undefinierter Bezeichner: 'TImage'
[Pascal Fehler] Unit3.pas(40): E2003 Undefinierter Bezeichner: 'TPanel'
[Pascal Fehler] Unit3.pas(40): E2029 Anweisung erwartet, aber 'THEN' gefunden
[Pascal Fehler] Unit3.pas(43): E2018 Record, Objekt oder Klassentyp erforderlich
[Pascal Fehler] Unit3.pas(44): E2066 Operator oder Semikolon fehlt
[Pascal Fehler] Unit3.pas(44): E2015 Operator ist auf diesen Operandentyp nicht anwendbar
[Pascal Fehler] Unit3.pas(45): E2066 Operator oder Semikolon fehlt
[Pascal Fehler] Unit3.pas(45): E2015 Operator ist auf diesen Operandentyp nicht anwendbar
[Pascal Fehler] Unit3.pas(46): E2066 Operator oder Semikolon fehlt
[Pascal Fehler] Unit3.pas(46): E2015 Operator ist auf diesen Operandentyp nicht anwendbar
[Pascal Fehler] Unit3.pas(47): E2066 Operator oder Semikolon fehlt
[Pascal Fehler] Unit3.pas(48): E2066 Operator oder Semikolon fehlt
[Pascal Fehler] Unit3.pas(49): E2066 Operator oder Semikolon fehlt
[Pascal Fehler] Unit3.pas(49): E2250 Es gibt keine überladene Version von 'Rectangle', die man mit diesen Argumenten aufrufen kann
[Pascal Fataler Fehler] Project4.dpr(5): F2063 Verwendete Unit 'Unit3.pas' kann nicht compiliert werden


if Components[i] is TPanel then

bringt auch kein Erfolg -.-

DeddyH 28. Sep 2009 08:54

Re: Fragen zur Komponente TPanel
 
Nochmal: steht ExtCtrls mit in der uses-Klausel?


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:22 Uhr.
Seite 1 von 3  1 23      

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