@Bernhard
1. was meinst du mit freigeben?
Freigeben heißt, daß man ein mit Create erstelltes Objekt vor Verlassen der Procedure wieder freigeben muß. Das geschieht am besten durch FreeAndNil. Schau mal in deiner Online-Hilfe. Bei mir funktioniert dieser Code einwandfrei:
Delphi-Quellcode:
procedure TFormMain.DrawGrid1Click(Sender: TObject);
var
bild:TPicture;
begin
bild:=TPicture.Create;
bild.LoadFromFile(Pfad + 'logo.bmp');
DrawGrid1.Canvas.Draw(0,0,bild.Graphic);
FreeAndNil(bild);
end;
Erklärung:
1. Die Draw-Methode der Zeichenfläche (Canvas) erwartet ein TGraphic und nicht ein TBitmap. Das kannst du ebenfalls in deiner Online-Hilfe nachlesen.
2. Wenn du das zu ladende Bild immer im Anwendungsordner hast, dann ist es sinnvoll, diesen Ordner bei Programmstart in einem String abzuspeichern:
Pfad := ExtractFilePath(Application.ExeName);
. Ansonsten könnte es nämlich nach der Verwendung eines Dateidialogs wie z.B. Opendialog nicht mehr gefunden werden, weil dabei das Verzeichnis gewechselt wurde.