EugenE hat geschrieben:
Left/Top/Bottom/Right für das TRect stimmen irgendwie nicht
Lieber Eugen,
Gewöhn dir bitte nicht diesen Stil an, jedes programmier Problemchen ins Forum zu setzen.
Versuch doch mal selber zu Debuggen, da lernst du auch was dabei.
Gerade beim Lazarus Debugger ist Writeln ein guter Freund.
Wenn du unter Windows bist, musst du glaub ich bei den Linker Einstellungen die Checkbox
"Win32 Gui application" oder so ähnlich ausschalten.
Dann kriegst du nebst der Anwendung eine Konsole, wo du alles mögliche rausschreiben kannst.
Schau doch mal, welche Werte dein Rect hat. Ich benutze dafür manchmal meine StringRect Funktion:
function StringRect(Rct: TRect): string;
begin
Result := 'Left: ' + inttostr(Rct.Left) +
' Top: ' + inttostr(Rct.Top) +
' Right: ' + inttostr(Rct.Right) +
' Bottom: ' + inttostr(Rct.Bottom);
end;
Nichts aufregendes, aber praktisch.
So siehst du schnell, ob die Werte sinnvoll sind oder nicht.
z.B. mit Writeln(StringRect(MyRect),' ',FormTop,' ',FormLeft); etc...
EDIT: Du darfst die Karte nicht Freen am Ende von procedure TForm1.Karten_zeichnen;
tempCard.free wegmachen!
Ausserdem solltest du die Arrays immer mit 0 beginnen.
Also: Kartenbilder = array[1..36] of TBitmap; ist nicht so schlau mach 0..35
Vor allem wenn du's nachher so ausliest:
for i := 0 to Length(Form1.karten_spieler) do
begin
tempCard := TCard.Create(fBilder[Form1.karten_spieler
]);
Da sind Kopfschmerzen vorprogrammiert.
Und schalte doch mal bei "Compilereinstellungen -> Quelltext" alle Überprüfungen ein, dann siehst du solche Böcke eher.