AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Bei OnMouseOver Hilfe zu Eintrag in TChecklistBox anzeigen?
Thema durchsuchen
Ansicht
Themen-Optionen

Bei OnMouseOver Hilfe zu Eintrag in TChecklistBox anzeigen?

Offene Frage von "winx"
Ein Thema von winx · begonnen am 24. Jan 2007 · letzter Beitrag vom 8. Feb 2007
Antwort Antwort
Seite 1 von 2  1 2      
winx

Registriert seit: 14. Jun 2005
265 Beiträge
 
#1

Bei OnMouseOver Hilfe zu Eintrag in TChecklistBox anzeigen?

  Alt 24. Jan 2007, 10:24
Hallo,

ich habe in meinem Forumlar eine TCheckListbox mit Einträgen.

Ist es mir möglich ein onMouseOver Event einzubauen, dass mir, immer wenn ich die Maus über einen Eintrag
in der Listbox bewege, ein kleines Popup mit einer für diesen Eintrag spezifischen Hilfe anzeigt?

Und: wie füge ich an die TChecklistbox ein event onmouseover hinzu: Ich Muß ich ne neue Komponente erstellen, mich von checklistbox ableiten und irgendwie das event zufügen, oder???
nur: wie mach ich das?

Danke,
winx
  Mit Zitat antworten Zitat
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Bei OnMouseOver Hilfe zu Eintrag in TChecklistBox anzeig

  Alt 24. Jan 2007, 10:41
Hi!

ich würde es so machen:

Jedem Item vorher mit AddObjekt einen Pointer auf ein Objekt
mitgeben, das Infos über das jeweilige Item speichert.
Delphi-Quellcode:
  TItemInfo = class
  private
   fInfoPicture: TBitmap;
  [ ...usw.. ]
  public
    property InfoString: string;
    property InfoPicture: TBitmap read fInfoPicture;
  end;
im OnMouseMove-Event dann:

Index := ListBox1.ItemAtPos(Point(X, Y), true); Das Item unter der Maus herausbekommen.

Nun das drangehängte Objekte des Item aufrufen und die
Infos dazu auslesen.
Delphi-Quellcode:
with TItemInfo(ListBox1.Items.Objects[Index]) do
begin
  ItemInfoString:= InfoString;
  [...]
end;


Gruß
Pfoto
Jürgen Höfs
  Mit Zitat antworten Zitat
winx

Registriert seit: 14. Jun 2005
265 Beiträge
 
#3

Re: Bei OnMouseOver Hilfe zu Eintrag in TChecklistBox anzeig

  Alt 24. Jan 2007, 10:44
Das ist ne gute Idee

jetzt bräucht ich nur noch nen Tip, wie ich das Problem mit dem Control
überschreiben mache, damit ich bei der ComboBoxListBox das
mouseOverEvent bekomme?


Hat da jemand nen Tip?

Thx,
winx
  Mit Zitat antworten Zitat
winx

Registriert seit: 14. Jun 2005
265 Beiträge
 
#4

Re: Bei OnMouseOver Hilfe zu Eintrag in TChecklistBox anzeig

  Alt 24. Jan 2007, 10:52
He,

das brauch ich ja gar nicht

Mit deinem MouseOve klappt es !!!

Jetzt nur noch ne letzte Frage:

Kann ich irgendwie so ne schöne, gelbe Hilfe (als Popup) beim MouseMove einbleden,
wenn er über dem Objekt ist???

Danke,
winx
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Bei OnMouseOver Hilfe zu Eintrag in TChecklistBox anzeig

  Alt 24. Jan 2007, 10:59
Delphi-Quellcode:
Tchecklistbox.showhint:=true;
TChecklistbox.hint:='Das wird angezeigt'
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
winx

Registriert seit: 14. Jun 2005
265 Beiträge
 
#6

Re: Bei OnMouseOver Hilfe zu Eintrag in TChecklistBox anzeig

  Alt 24. Jan 2007, 11:04
dass problem ist, das der hint spezifisch für die ganze box ist und nich fürs item...
also kommt der hint auch, wenn ich nur auf die combolistbos fahre, irgendwo hin...
kann man das auch fürs item machen?
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Bei OnMouseOver Hilfe zu Eintrag in TChecklistBox anzeig

  Alt 24. Jan 2007, 11:31
Na du überprüfst doch bei onMouseMove, wo sich die Maus befindet. Und je nachdem, wo die Maus ist, sezt du das Hintfenster neu, oder lässt es halt gar nicht anzeigen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
winx

Registriert seit: 14. Jun 2005
265 Beiträge
 
#8

Re: Bei OnMouseOver Hilfe zu Eintrag in TChecklistBox anzeig

  Alt 24. Jan 2007, 11:39
So hab ichs jetzt auch, aber irgendwie klappt des noch nich so richtig:

Delphi-Quellcode:
procedure Tmainform.objectlistMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var index : integer;
    val : string;
begin

  index := objectlist.ItemAtPos(Point(x,y),true);

  if (index > -1) then begin

    objectlist.ShowHint := true;
    try
      if (objectlist.Items[objectlist.ItemIndex] = objectlist.Items[objectlist.ItemAtPos(Point(X, Y), True)]) then
        objectlist.Hint := objectlist.Items[index]
      else
        objectList.ShowHint := false;

    finally
      objectlist.ShowHint := false;
    end;

  end;

end;
jetzt zeigt sich NIX mehr an
wo liegt denn da der Fehler???
  Mit Zitat antworten Zitat
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Bei OnMouseOver Hilfe zu Eintrag in TChecklistBox anzeig

  Alt 24. Jan 2007, 12:45
Hallo nochmal,

also hier ist mein Code, eben getestet:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TItemData = class
  private
    fInfoString: string;
  public
    property InfoString: string read fInfoString;
    constructor Create(aInfoString: string);
  end;

  TForm1 = class(TForm)
    ListBox1: TListBox;
    Button1: TButton;
    lblItemData: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    { Private-Deklarationen } 
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
  { Einfach mal ein paar sinnlose Einträge einfügen }
  for i:= 0 to 10 do
    ListBox1.Items.AddObject('Eintrag Nr. ' + inttostr(i), TItemData.Create('Daten zu Eintrag Nr. ' + inttostr(i)));
end;

{ TItemData }

constructor TItemData.Create(aInfoString: string);
begin
  inherited Create;
  fInfoString:= aInfoString;
end;

procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  Index: integer;
begin
  with TListbox(Sender) do
  begin
    Index:= ItemAtPos(Point(x,y), true);
    ShowHint:= Index <> -1;
    If (Index <> -1) then
      Hint:= TItemData(Items.Objects[Index]).InfoString;
  end;
end;

end.

Natürlich könnte man das Ganze noch etwas perfektionieren, indem z.B.
der Hint schneller oder länger angezeigt wird.
Das kann man ja dann nach Wunsch einstellen.

Gruß

Pfoto
Jürgen Höfs
  Mit Zitat antworten Zitat
winx

Registriert seit: 14. Jun 2005
265 Beiträge
 
#10

Re: Bei OnMouseOver Hilfe zu Eintrag in TChecklistBox anzeig

  Alt 24. Jan 2007, 13:22
Hallo Pfoto,

swoeit war ich doch auch schon ,allerdings zeigts dann immer, wenn ich auf die Control gehe die Infobox an,
ich möchte aber nur wenn man über ein Objekt geht.

Und dann hab ichs mir so gedacht:

Delphi-Quellcode:
procedure Tmainform.objectlistMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var index : integer;
    val : string;
begin

  index := objectlist.ItemAtPos(Point(x,y),true);

  if (index > -1) then begin

    objectlist.ShowHint := true;
    try
      if (objectlist.Items[objectlist.ItemIndex] = objectlist.Items[objectlist.ItemAtPos(Point(X, Y), True)]) then
        objectlist.Hint := objectlist.Items[index]
      else
        objectList.ShowHint := false;

    finally
      objectlist.ShowHint := false;
    end;

  end;

end;
aber klappt eben nich...bin mir nur nich im klaren, wieso?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 05:01 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