hallo,
habe hier ein script, dass erst in einem verzeichnis alle bilder auslesen soll und dann die moeglichkeit bietet, diese mit zwei button (vor und zurueck) anzuzeigen.
macht es auch alles.
aber wenn ich dann die scrollbox mit den TImage fuer die thumbnails erstelle, dann kommt beim schliessen des programms die fehlermeldung:
Exception EInvalidPointer in Modul Projekt1.exe
Ungültige Zeigeropreation
vorher nicht.
die thumbnails in der scrollbox werden auch richtig erstellt, da gibt es auch keine probleme, nur die fehlermeldung stoert.
und dann geht das ereignis ondblclick, dass beim dynamischen erstellen der timage erstellt werden soll nicht. da steht dann immer
Inkobpatible Typen: TNotifyEvent und procedure.
vielleicht hilft ja der quelltext.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78:
| private pics : TStrings; aktuell : Integer; bilder : Array of TImage; end;
procedure TForm1.FormCreate(Sender: TObject); var gefunden: TSearchRec; i : Integer; begin
aktuell := 0;
ChDir(ExtractFilePath(ParamStr(0)));
pics := TStringList.Create;
if (FindFirst('galerie\pictures\*.jpg',faDirectory,gefunden)=0) then begin repeat if (gefunden.Name<>'.') and (gefunden.Name<>'..') then pics.Add(gefunden.Name); until FindNext(gefunden)<>0; FindClose(gefunden); end;
SetLength(bilder,pics.Count-1);
for i := 0 to pics.Count-1 do begin bilder[i] := TImage.Create(ScrollBox1); bilder[i].Name := 'Image' + InttoStr(i); bilder[i].Parent := ScrollBox1; bilder[i].Left := 0; bilder[i].Top := i * 80; bilder[i].Center := True; try bilder[i].Picture.LoadFromFile('galerie\thumbnails\' + pics[i]); except on EInvalidGraphic do bilder[i].Picture.Graphic := nil; end; end; end;
procedure TForm1.Button2Click(Sender: TObject); begin if aktuell < pics.Count-1 then inc(aktuell) else aktuell := 0; bildladen(-1); end;
procedure TForm1.Button1Click(Sender: TObject); begin if aktuell > 0 then dec(aktuell) else aktuell := pics.Count-1; bildladen(-1); end;
procedure TForm1.bildladen(index: Integer); begin if index <> -1 then aktuell := index; try bildanzeige.Picture.LoadFromFile('galerie\pictures\' + pics[aktuell]); except on EInvalidGraphic do bildanzeige.Picture.Graphic := nil; end; end; |
vielen dank schon mal im vorraus.