AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Element auf der sich Mauscursor befindet ausführen
Thema durchsuchen
Ansicht
Themen-Optionen

Element auf der sich Mauscursor befindet ausführen

Ein Thema von guevaradelaserna · begonnen am 4. Feb 2008 · letzter Beitrag vom 7. Feb 2008
Antwort Antwort
Seite 1 von 2  1 2      
guevaradelaserna
(Gast)

n/a Beiträge
 
#1

Element auf der sich Mauscursor befindet ausführen

  Alt 4. Feb 2008, 18:01
Hallo!
Ich hatte heute mittag schonmal gepostet wegen einem ähnlichen Problem...

Ich möchte das bei allen möglichen Elementtypen (Button, Panel, Image, Imagelist, ...), die sich im OnClick ereignis befindliche Aktion mittels der Positionierung der Maus auf dem Element ausgeführt wird. Beim Button ging es mittels SetFocus bzw. ActiveControl. Jedoch kann ich diese bei Images nicht nutzen da sie von einer anderen Klasse erben. Da ich keine Ahnung von Delphi habe und auch nix im Forum gefunden habe, hoffe ich, dass ihr mir irgendwie weiterhelfen könnt.

Danke Che
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: Element auf der sich Mauscursor befindet ausführen

  Alt 4. Feb 2008, 19:16
Möchtest du, wenn sich die Maus über ein Control bewegt, einen Klick ausführen?
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.623 Beiträge
 
Delphi 12 Athens
 
#3

Re: Element auf der sich Mauscursor befindet ausführen

  Alt 4. Feb 2008, 19:19
Schau Dir mal ControlAtPos an.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
guevaradelaserna
(Gast)

n/a Beiträge
 
#4

Re: Element auf der sich Mauscursor befindet ausführen

  Alt 4. Feb 2008, 19:46
Ja genau es soll nach einer gewissen Zeit ein Klick ausgeführt werden. Die Zeit habe ich mit einem Timer gelöst. Ich werde es aber erstmal mit dem Tipp von DeddyH probieren (danke mal wieder). Aber falls du noch eine andere Idee hast, bin ich offen dafür.

Ciao Alex
  Mit Zitat antworten Zitat
guevaradelaserna
(Gast)

n/a Beiträge
 
#5

Re: Element auf der sich Mauscursor befindet ausführen

  Alt 5. Feb 2008, 15:20
Hallo!
Mit dem Vorschlag ControlAtPos bin ich nicht weiter gekommen, da ein Image nicht zu TWinControl gehört! Habt ihr vll noch eine andere Idee, wie ich ein x-beliebiges Control mittels drüberfahren auslösen kann? Also wie im Code beschrieben, wird beim eintreten der Maus der Timer eingeschaltet und die gegenwärtige Zeit genommen. Der Timer überprüft jede Sekunde, ob der Schwellwert schon überschritten ist. Wenn dies der Fall ist soll er das jeweilige Click-Ereignis des Controls ausführen so dass dieser Teil ImageEx1Click(ImageEx1);] variabel sein soll.

Ciao Che
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
QueryPerformanceFrequency(a);
QueryPerformanceCounter(c);
if ((((c - b) * 1000 div a) >= 10000) and (b>0)) then
  begin
    ImageEx1Click(ImageEx1);
  end;
end;

procedure TForm1.ImageEx1MouseEnter(Sender: TObject);
begin
  timer1.Enabled:=true;
  QueryPerformanceCounter(b);
end;

procedure TForm1.ImageEx1Click(Sender: TObject);
begin
form1.Color:=clcream;
end;

procedure TForm1.ImageEx1MouseLeave(Sender: TObject);
begin
timer1.Enabled:=false;
end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.623 Beiträge
 
Delphi 12 Athens
 
#6

Re: Element auf der sich Mauscursor befindet ausführen

  Alt 5. Feb 2008, 15:29
Image muss ja auch kein TWinControl sein. Versuch mal dieses Beispiel:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var c: TControl;
begin
  c := self.ControlAtPos(self.ScreenToClient(Mouse.CursorPos),true);
  if Assigned(c) and (c is TImage) then
    begin
      Timer1.Enabled := false;
      ShowMessage('Image erwischt');
      Timer1.Enabled := true;
    end;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
guevaradelaserna
(Gast)

n/a Beiträge
 
#7

Re: Element auf der sich Mauscursor befindet ausführen

  Alt 6. Feb 2008, 12:12
Danke erstmal für den Code . Nun steh ich aber vor dem Problem, dass ich dies mit images aus einer imagelist machen möchte. Jedoch kann ich hier nicht meine Variante mit mit dem OnEnter bzw. OnLeave als Erweiterung der Porperties von ImageList machen. Weisst du wie man den Images aus der ImageList diese Eigenschaft zuweisen kann.

Des Weiteren weiss ich noch nicht so recht wie ich an das jeweilige OnClick-Ereignis der Images rankomme.

Tut mir leid, dass ich so viele Fragen stelle, aber ich steig da nur sehr langsam durch.

Ciao Che
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.623 Beiträge
 
Delphi 12 Athens
 
#8

Re: Element auf der sich Mauscursor befindet ausführen

  Alt 6. Feb 2008, 13:08
Ich fürchte, Du hast hier etwas verwechselt. Ein TImage ist eine Komponente zur Anzeige von Grafiken und hat als TControl auch ein OnClick-Ereignis. Eine TImageList ist keine Sammlung von TImages, sondern von Grafiken, die über ihren Index angesprochen werden können. Somit haben die einzelnen Elemente auch kein OnClick-Ereignis, das Du auswerten könntest. Eine Möglichkeit wäre, die in der ImageList enthaltenen Grafiken (dynamisch?) in entsprechende Image-Komponenten zu laden, da würde mein Beispielcode dann wieder funktionieren. Bei weiteren Fragen einfach fragen
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
guevaradelaserna
(Gast)

n/a Beiträge
 
#9

Re: Element auf der sich Mauscursor befindet ausführen

  Alt 6. Feb 2008, 14:53
Hey! Hast du da vll zumindest einen Ansatz zum umwandeln der Grafiken in TImages für mich? Ich habe weder in den Dokus noch im Netz was dazu gefunden!

Bye Che
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.623 Beiträge
 
Delphi 12 Athens
 
#10

Re: Element auf der sich Mauscursor befindet ausführen

  Alt 6. Feb 2008, 15:23
Hier mal ein Beispiel, wie man die Bitmaps aus einer ImageList der Reihe nach in ein TImage lädt:
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Image1: TImage;
    ImageList1: TImageList;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    ImgIndex: integer;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var bmp: TBitmap;
begin
  if ImageList1.Count > 0 then
    begin
      if (ImgIndex < Pred(ImageList1.Count)) then
        inc(ImgIndex)
      else
        ImgIndex := 0;
      bmp := TBitmap.Create;
      try
        ImageList1.GetBitmap(ImgIndex,bmp);
        Image1.Picture.Bitmap.Assign(bmp);
      finally
        bmp.Free;
      end;
    end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ImgIndex := 0;
end;

end.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  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 09:16 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