Also, hier die Lösung dafür, dass ausserhalb der Objekte nichts angezeigt wird...
Delphi-Quellcode:
procedure THotelForm.PaintBox1MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
var mausPos: TPoint;
zma, i: Integer;
merker: Boolean;
begin
mausPos.X := x-hRand;
mausPos.Y := y-vRand;
zma := length(zimmerObj);
merker:= false;
for i := 0 to zma-1 do
begin
if zimmerObj[i].clicked(mausPos) = true then
begin
PaintBox1.ShowHint := false;
PaintBox1.Hint := 'Zimmer ' + zimmerObj[i].zimNum + ': wieder frei am ' +
FormatDateTime('dd.mm.yyyy', zimmerObj[i].buchung.abreise);
PaintBox1.ShowHint := true;
merker := true;
end;
end;
if merker = false then
begin
PaintBox1.ShowHint := false;
PaintBox1.Hint := '';
PaintBox1.ShowHint := true;
end;
end;
Ich habe einen Merker eingeführt, der am Anfang des Ereignisses auf false gestellt wird.
Sobald ein Objekt mit clicked=true antwortet, wird dieser auch auf true gesetzt. Ein Objekt ist von der Maus erfasst.
Sind alle Objekte durch laufen, und ist der Merker immer noch false, ist kein Objekt markiert und Hint wird auf null gesetzt.
Mit else konnte es nicht gehen, weil dieses else innerhalb der for-Schleife stand. Da nach einem positiven Objekt kein Abbruch der Schleife stattfand, wurde immer noch einmal else ausgeführt...
Also, mein Problem liegt immer noch darin, dass ich nicht hintereinander zweimal einen Hilfetext anzeigen lassen kann, ohne die Paintbox zwischen durch mit der Maus zuverlassen...
Wer kann mir helfen??? Zur Not im neuen Jahr!!!
Ich wünsche einen guten Rutsch!!!
stoermi