Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi unbegründete AccessViolation? (https://www.delphipraxis.net/67010-unbegruendete-accessviolation.html)

xaromz 7. Apr 2006 22:04

Re: unbegründete AccessViolation?
 
Hallo,
Zitat:

Zitat von Hawkeye219
Bei einer TPaintBox sollte man doch nur in der Behandlungsroutine für OnPaint zeichnen.

Wer sagt das?

//Edit:
Noch was zur Frage: Was löst denn das Ereignis "Delete1Click" aus? Das sieht mir nach einem Menüeintrag aus (Du schreibst ja auch von einem Popup-Menü). Dann ist Sender natürlich der Menüpunkt und somit auch keine Paintbox.

Gruß
xaromz

Hawkeye219 7. Apr 2006 22:09

Re: unbegründete AccessViolation?
 
Die Online-Hilfe:

Zitat:

Mit TPaintBox können Sie einem Formular benutzerdefinierte Bilder hinzufügen. Im Gegensatz zu TImage-Objekten, die Bilder aus einer Bitmap-, Symbol- oder Metadatei anzeigen, muß die Anwendung bei TPaintBox das Bild direkt auf der Zeichenfläche selbst erzeugen. Mit der Ereignisbehandlungsroutine OnPaint zeichnen Sie auf die Zeichenfläche der TPaintBox-Komponente.
Soviel ich weiß, kann die PaintBox - im Gegensatz zu TImage - das Bild gar nicht selbst wiederherstellen. Deshalb muß der Zeichencode in den Handler für OnPaint verlagert werden.

Korrigiere mich bitte, wenn ich mich irre!

Gruß Hawkeye

Nicodius 7. Apr 2006 22:15

Re: unbegründete AccessViolation?
 
also das ist eigentlich nur ein test diese zeile - normal sollte es das bild halt leeren


das mit dem sender vom popup kommt mir aber seltsam vor weil ich komme trotz

Delphi-Quellcode:
if Tpaintbox(Sender) <> nil then ...
absicherung in den block rein ;)


grüße Nico

Nicodius 7. Apr 2006 22:18

Re: unbegründete AccessViolation?
 
danke das mit dem sender stimmte natürlich - ich hab als sender ja das popupmenu


@ christian ich versteh nich ich hab die richtigen tagwerte bekommen bei meiner kontrolle und bin in den block gekommen?

Hawkeye219 7. Apr 2006 22:20

Re: unbegründete AccessViolation?
 
Noch ein Wort zu Deiner "Absicherung": es ist keine! Der Sender sollte unter normalen Umständen <> NIL sein, daran ändert auch der TypeCast nichts.
Christians Vorschlag war

Delphi-Quellcode:
if Sender is TPaintBox then ...
Gruß Hawkeye

Nicodius 7. Apr 2006 22:24

Re: unbegründete AccessViolation?
 
es geht doch noch nicht :(

Delphi-Quellcode:
procedure TMyArtz.NeuClick(Sender: TObject);
var newsheet:ttabsheet;
begin
  newsheet := ttabsheet.Create(tabs);
  newsheet.Name := 'ts_' + IntToStr(nr);
  newsheet.PageControl := tabs;
  newsheet.Caption := 'Unbekannt_' + IntToStr(nr);
  pb := TPaintbox.Create(Tabs);
  pb.Parent := newsheet;
  pb.Tag := nr;
  pb.Name := 'pb_' + IntToStr(nr);
  pb.Width := tabs.Width;
  pb.Height := tabs.Height;
  inc(nr);
end;

procedure TMyArtz.Delete1Click(Sender: TObject);
var i, w, h : Integer;
begin
  w := TPaintbox(FindComponent('pb_' + IntToStr(tabs.ActivePageIndex))).width;
  h := TPaintbox(FindComponent('pb_' + IntToStr(tabs.ActivePageIndex))).height;

  TPaintbox(FindComponent('pb_' + IntToStr(tabs.ActivePageIndex))).Canvas.Rectangle(0,0,w,h);
end;

so muss es doch gehn? - ich hab drei seiten erstellt und hab bei activepage auch schon mal -1 genommen...

Muetze1 7. Apr 2006 23:42

Re: unbegründete AccessViolation?
 
Delphi-Quellcode:
procedure TMyArtz.Delete1Click(Sender: TObject);
var
  i, w, h : Integer;
  lElem: TPaintBox;
begin
  If ( tabs.ActivePageIndex > -1 ) Then
  Begin
    lElem := FindComponent('pb_' + IntToStr(tabs.ActivePageIndex)) As TPaintBox;

    If Assigned(lElem) Then
    Begin
      w := lElem.width;
      h := lElem.height;

      lElem.Canvas.Rectangle(0,0,w,h);
    End;
  End;
end;

Nicodius 8. Apr 2006 07:40

Re: unbegründete AccessViolation?
 
heyy danke vielmals :)


das nennt man guten start in den tag :thumb:

ahh allerdings springts bei assigned(lelem) immer raus :(

grüße Nico :)


edit// pb := TPaintbox.Create(Self); hatte hinten Tabs stehen - in der früh merkt man die fehler eben :mrgreen: :mrgreen: danke an alle trotzdem vielmals ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:51 Uhr.
Seite 2 von 2     12   

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