AGB  ·  Datenschutz  ·  Impressum  







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

verschiedene Hilfetexte auf einer PaintBox

Ein Thema von stoermi · begonnen am 31. Dez 2004 · letzter Beitrag vom 31. Dez 2004
Antwort Antwort
stoermi

Registriert seit: 1. Dez 2004
Ort: im Wald von Thüringen
75 Beiträge
 
Delphi 6 Enterprise
 
#1

verschiedene Hilfetexte auf einer PaintBox

  Alt 31. Dez 2004, 16:14
Hallo!

Ich habe eine PaintBox mit verschiedenen gezeichneten Objekten drauf.
Nun möchte ich, wenn der Benutzer mit der Maus auf ein solches Objekt zeigt, dass ein Hilfetext (gelbes Schildchen) mit einer Beschreibung angezeigt wird.
Das funktioniert auch mit meinem Code.
Das erste Problem besteht darin, dass, wenn ich die Maus wieder bewege, und ich sie dann auf eine freie Fläche bewege, wieder der selbe Text dargestellt wird. Dort soll aber nix kommen, da da ja kein Objekt ist.
Da sind wir gleich beim zweiten Problem: Ich verwende das Ereignis OnMouseMove der PaintBox. Solange ich mich mit der Muas auf der PaintBox befinde, wird nur ein Hilfe Text dargestellt. Ich möchte aber, dass er beim wandern über die Objekte jeweils einen neuen anderen Hilfetext darstellt.
Vielleicht könnt ihr mir helfen...

Hier mein bisheriger Code:

Delphi-Quellcode:
procedure PaintBox1MouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
var mausPos: TPoint;
    zma, i: Integer;
begin
  mausPos.X := x-hRand; //Mausposition
  mausPos.Y := y-vRand;
  zma := length(zimmerObj); //anzahl der zu durchlaufenden Objekte

  for i := 0 to zma-1 do
  begin
    if zimmerObj[i].clicked(mausPos) = true then //gibt true zurück wenn mausPos in zimmerObj
    begin
      PaintBox1.Hint := 'Zimmer ' + zimmerObj[i].zimNum + ': wieder frei am ' +
                        FormatDateTime('dd.mm.yyyy', zimmerObj[i].buchung.abreise);
      PaintBox1.ShowHint := true;
    end
    else
    begin
      //?????? //in diesem Fall soll nix angezeigt werden
    end;
  end;

end;

edit: Schreibfehler korrigiert!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: verschiedene Hilfetexte auf einer PaintBox

  Alt 31. Dez 2004, 16:29
Was passiert denn, wenn du bei den Fragezeichen ShowHint wieder auf False setzt?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
stoermi

Registriert seit: 1. Dez 2004
Ort: im Wald von Thüringen
75 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: verschiedene Hilfetexte auf einer PaintBox

  Alt 31. Dez 2004, 16:37
Hallo Luckie!

Zitat von Luckie:
Was passiert denn, wenn du bei den Fragezeichen ShowHint wieder auf False setzt?
Dann passiert nichts... überhaupt nichts... Dann werden überhaupt keine Hint's gezeigt!?!

Was mir noch aufgefallen ist...
Wenn ich mir einen Hilfe-Text hab anzeigen lassen, dann auf ein anderes Objekt gehe - es passiert dann ja nichts - dann von der PaintBox runter gehe und dann wieder drauf, aber in einen freien Bereich - wird mit die Information zum zweiten Objekt angezeigt.

Das heißt, der Hilfe-Text Hint wird beim Bewegen auf ein anderes Objekt geändert, nur nicht angezeigt...

Ich habs jetzt schon so versucht, bring aber nichts...

Delphi-Quellcode:
        PaintBox1.ShowHint := false;
        PaintBox1.Hint := 'Zimmer ' + zimmerObj[i].zimNum + ': wieder frei am ' + FormatDateTime('dd.mm.yyyy', zimmerObj[i].buchung.abreise);
        PaintBox1.ShowHint := true;
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: verschiedene Hilfetexte auf einer PaintBox

  Alt 31. Dez 2004, 16:44
also Prinzip ist ja folgendes: Du musst dir ja deine Objekte merken und zwar mit ihrer Position und ihrem Ausmaßen. Im OnMouseMove der Paintbox musst du dann allle Objekte durchgehen und gucken, ob sich die Maus in einem Objekt befindet und entsprechend den Hilfetext anzeigen oder eben nicht, wenn sich die Maus über keinem Objekt befindet. So viel zum Prinzip. In Code umsetzten habe ich jetzt allerdings keine Lust, ich muss mein Auto erstmal wieder flott bekommen, da habe ich vorhin vergessen das Licht auszuschalten.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
stoermi

Registriert seit: 1. Dez 2004
Ort: im Wald von Thüringen
75 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: verschiedene Hilfetexte auf einer PaintBox

  Alt 31. Dez 2004, 17:09
Zitat von Luckie:
also Prinzip ist ja folgendes: Du musst dir ja deine Objekte merken und zwar mit ihrer Position und ihrem Ausmaßen. Im OnMouseMove der Paintbox musst du dann allle Objekte durchgehen und gucken, ob sich die Maus in einem Objekt befindet und entsprechend den Hilfetext anzeigen oder eben nicht, wenn sich die Maus über keinem Objekt befindet. So viel zum Prinzip.
Richtig, dass habe ich mir so vorgestellt!

Zitat von Luckie:
In Code umsetzten habe ich jetzt allerdings keine Lust, ich muss mein Auto erstmal wieder flott bekommen, da habe ich vorhin vergessen das Licht auszuschalten. :roll:
Die Umsetzung ist grad das Problem!
Ich denk, dass das Problem einfach darin liegt, dass der Hilfetext nur einmal angezeigt wird. Aber selbst mit einem Timer wird es schwer zurealiesieren sein...
  Mit Zitat antworten Zitat
stoermi

Registriert seit: 1. Dez 2004
Ort: im Wald von Thüringen
75 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: verschiedene Hilfetexte auf einer PaintBox

  Alt 31. Dez 2004, 17:22
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
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:11 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