AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Dynamische Paintbox wird nicht angezeigt...
Thema durchsuchen
Ansicht
Themen-Optionen

Dynamische Paintbox wird nicht angezeigt...

Ein Thema von glkgereon · begonnen am 10. Okt 2005 · letzter Beitrag vom 11. Okt 2005
Antwort Antwort
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#1

Dynamische Paintbox wird nicht angezeigt...

  Alt 10. Okt 2005, 19:06
Hi

Ich habe mir einen Typ von TPaintBox abgeleitet und erstelle dynamisch eine Instanz dieses Typs (MyPaintBox).
Zur Vereinfachung soll diese MyPaintBox in einem Panel mit alClient angezeigt werden, damit ich direkt im OI regeln kann, wo es angezeigt werden soll...

das versuche ich so:

Delphi-Quellcode:
constructor TMyPaintBox.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  Parent:=TWinControl(AOwner);
end;

procedure TForm1.FormCreate(Sender: TObject);
var i:Integer;
begin
  PB:=TMyPaintBox.Create(Panel1);
  PB.Align:=alClient;
  PB.Show;
end;
aber ich kann dann malen was ich will....es passiert nichts.

Woran liegts?

Edit: Rechtschreibung und Randomize hat hier nichts zu suchen....
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
marabu

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

Re: Dynamische Paintbox wird nicht angezeigt...

  Alt 10. Okt 2005, 19:53
Hi Gereon,

vielleicht solltest du als erstes folgende Änderung machen:

Delphi-Quellcode:
constructor TMyPaintBox.Create(AOwner, AParent: TComponent);
begin
  inherited Create(AOwner);
  Parent := AParent;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  PB := TMyPaintBox.Create(self, Panel1);
  PB.Align := alClient;
end;
Danach solltest du die Behandlungsroutine für das Ereignis OnPaint deiner Komponente untersuchen. Ich wüsste sonst nicht, warum die Darstellung unterbleiben sollte.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Dynamische Paintbox wird nicht angezeigt...

  Alt 10. Okt 2005, 20:30
Hast du auch den Parent zugewiesen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#4

Re: Dynamische Paintbox wird nicht angezeigt...

  Alt 10. Okt 2005, 22:51
hab das ganze jetzt so geändert (auch den Aufruf):
Delphi-Quellcode:
constructor THangManPB.Create(AParent, AOwner: TComponent);
begin
  inherited Create(AOwner);
  Parent:=TWinControl(AParent);
end;
es kommt aber immer noch nichts...

Zitat:
Danach solltest du die Behandlungsroutine für das Ereignis OnPaint deiner Komponente untersuchen. Ich wüsste sonst nicht, warum die Darstellung unterbleiben sollte.
was genau meinst du damit?
hast du mal ein beispiel? (ich mach das zum ersten mal )
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
SMO

Registriert seit: 20. Jul 2005
178 Beiträge
 
Delphi XE6 Professional
 
#5

Re: Dynamische Paintbox wird nicht angezeigt...

  Alt 10. Okt 2005, 23:30
Eine PaintBox wird nur zur Entwurfszeit, im Designer von Delphi, durch ein gestricheltes Rechteck dargestellt. An und für sich ist sie unsichtbar. Logisch, denn eine PaintBox dient ja quasi nur als Leinwand, auf die man mittels ihres OnPaint-Ereignisses selbst etwas zeichnen muss.

Dem OnPaint-Ereignis einen Handler zuweisen geht z.B. so:
Delphi-Quellcode:
// Methode aus deinem ersten Beitrag, etwas erweitert
procedure TForm1.FormCreate(Sender: TObject);
var i:Integer;
begin
  PB:=TMyPaintBox.Create(Panel1);
  PB.Align:=alClient;
  PB.OnPaint := MyPaintBoxPaint;
end;

// Methode von Form1, die der PaintBox als OnPaint-Handler zugewiesen wird
// Dieses Beispiel füllt die Fläche der PaintBox einfach nur mit blauer Farbe
procedure TForm1.MyPaintBoxPaint(Sender: TObject);
begin
  with Sender as TPaintBox do
  begin
    Canvas.Brush.Color := clBlue;
    Canvas.FillRect(ClientRect);
  end;
end;
Ich hoffe das hilft ein bisschen. Vielleicht solltest du erst mal mit statischen, mittels des Delphi Formdesigners platzierten PaintBoxes üben, bevor du dich an dynamische wagst.
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#6

Re: Dynamische Paintbox wird nicht angezeigt...

  Alt 11. Okt 2005, 08:20
ja, ich kenne das Prinzip bereits...

also es war alles richtig, nur musste ich im OnPaint alles neu gemalt werden, und das hatte ich irgendwie noch nicht...

Vielen Dank!!!

(Ihr werdet das fertige Programm wahrscheinlich noch zu sehen bekommen )
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Antwort Antwort


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