AGB  ·  Datenschutz  ·  Impressum  







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

unbegründete AccessViolation?

Offene Frage von "Nicodius"
Ein Thema von Nicodius · begonnen am 7. Apr 2006 · letzter Beitrag vom 8. Apr 2006
Antwort Antwort
Seite 2 von 2     12   
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#11

Re: unbegründete AccessViolation?

  Alt 7. Apr 2006, 22:04
Hallo,
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
  Mit Zitat antworten Zitat
Hawkeye219

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

Re: unbegründete AccessViolation?

  Alt 7. Apr 2006, 22:09
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
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#13

Re: unbegründete AccessViolation?

  Alt 7. Apr 2006, 22:15
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

if Tpaintbox(Sender) <> nil then ... absicherung in den block rein


grüße Nico
Nico Müller
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#14

Re: unbegründete AccessViolation?

  Alt 7. Apr 2006, 22:18
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?
Nico Müller
  Mit Zitat antworten Zitat
Hawkeye219

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

Re: unbegründete AccessViolation?

  Alt 7. Apr 2006, 22:20
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

if Sender is TPaintBox then ... Gruß Hawkeye
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#16

Re: unbegründete AccessViolation?

  Alt 7. Apr 2006, 22:24
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...
Nico Müller
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#17

Re: unbegründete AccessViolation?

  Alt 7. Apr 2006, 23:42
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;
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#18

Re: unbegründete AccessViolation?

  Alt 8. Apr 2006, 07:40
heyy danke vielmals


das nennt man guten start in den tag

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 danke an alle trotzdem vielmals
Nico Müller
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 14:34 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