Announcement

Collapse
No announcement yet.

Mauszeiger ändern über komponente

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Mauszeiger ändern über komponente

    Hallo,

    habe gerade wieder ein problem, welches ich schon paar mal hatte und immer ne "bastel"-lösung genommen habe!

    der mauszeiger soll über einer bestimmten komponente zum kreuz werden, und wenn der mauszeiger die komponente verläßt soll er wieder default werden!

    meine bastellösung war bisher, ich benutze onmousemove der komponente über welcher der mauzeiger zum kreuz werden soll und benutze onmousemove der umliegenden komponenten damit er wieder crdefault wird!

    funktioniert, aber schön ist es nicht, gibt es was besseres?

    Gruß

    Markus
    Herzliche Grüße

    Markus Lemcke
    barrierefreies Webdesign

  • #2
    Hi Marcus,
    die meisten Komponenten haben doch die Eigenschaft Cursor.
    Ansonsten musst du die procedure:
    procedure WMMouseLeave(var Message: TMessage); message WM_MOUSELEAVE;
    neu definieren.
    Gruß, Fran

    Comment


    • #3
      das mit mouseleave wurde mich interessieren!
      wie kann ich das neu definieren, sagen wir mal für ne image-komponente!

      Gruß

      Marku
      Herzliche Grüße

      Markus Lemcke
      barrierefreies Webdesign

      Comment


      • #4
        Hi Marcus,
        warum reicht
        Image1.Cursor := crCross;
        für deinen Fall nicht aus?
        Fran

        Comment


        • #5
          Beispiel für Ableitung eigener Komponente von TImage:
          <CODE>
          unit Unit1;

          interface

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

          type
          TMyImage = class;
          TForm1 = class(TForm)
          Label1: TLabel;
          procedure FormCreate(Sender: TObject);
          private
          FCnt: Integer;
          FImage: TMyImage;
          { Private-Deklarationen }
          public
          procedure doMouseLeave(Sender: TObject);
          { Public-Deklarationen }
          end;

          TMyImage = class(TImage)
          private
          FOnMouseLeave: TNotifyEvent;
          procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
          published
          property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
          end;

          var
          Form1: TForm1;

          implementation

          {$R *.dfm}

          procedure TMyImage.CMMouseLeave(var Message: TMessage);
          begin
          inherited;
          if Assigned(FOnMouseLeave) then
          FOnMouseLeave(Self);
          end;

          procedure TForm1.doMouseLeave(Sender: TObject);
          begin
          // MessageDlg('Raus', mtWarning, [mbOK], 0);
          Inc(FCnt);
          Label1.Caption := IntToStr(FCnt);
          end;

          procedure TForm1.FormCreate(Sender: TObject);
          begin
          FImage := TMyImage.Create(Self);
          FImage.Parent := Self;
          FImage.Picture.LoadFromFile('d:\splash.bmp');
          FImage.Left := 10;
          FImage.Top := 10;
          FImage.Width := FImage.Picture.Width;
          FImage.Height:= FImage.Picture.Height;

          FImage.OnMouseLeave := doMouseLeave;
          FImage.Show;
          FImage.Color := clGray;
          FImage.Picture.LoadFromFile('d:\splash.bmp');
          end;

          end.
          </CODE>
          Fran

          Comment


          • #6
            hallo frank,

            vielen dank! werde es sofort testen.

            gruß

            Marku
            Herzliche Grüße

            Markus Lemcke
            barrierefreies Webdesign

            Comment


            • #7
              hi frank,

              dein beispiel funzt perfekt!

              habe aber noch paar fragen:

              1. ich muss dann die image-komponente zur laufzeit erstellen oder?

              2. kannst du noch bitte ein beispiel machen für mousemove für die abgeleitete komponente! habe es irgendwie nicht hinbekommen.

              vielen dank für deine hilfe!

              Gruß

              Marku
              Herzliche Grüße

              Markus Lemcke
              barrierefreies Webdesign

              Comment


              • #8
                Hi MArcus,
                du musst nicht die Komponente zur Laufzeit erstellen.
                Ich mach dir noch ein Package draus und setz den Link hier rein.
                Fran

                Comment


                • #9
                  <b>VIELEN DANK!!!</b&gt
                  Herzliche Grüße

                  Markus Lemcke
                  barrierefreies Webdesign

                  Comment


                  • #10
                    Habe es noch um OnMouseEnter erweitert.
                    Viel Glück...
                    <a href="http://www.reim-edv.de/download/marcus.zip">http://www.reim-edv.de/download/marcus.zip</a>
                    Fran

                    Comment


                    • #11
                      vielen dank!

                      Marku
                      Herzliche Grüße

                      Markus Lemcke
                      barrierefreies Webdesign

                      Comment


                      • #12
                        hi frank!

                        dein code ist echt übersichtlich, nächstes mal mache ich es selber!
                        noch eine frage:
                        woher wußtest du dass die message CM_MOUSELEAVE heißt,
                        wo schaut man sowas nach?

                        Gruß

                        Marku
                        Herzliche Grüße

                        Markus Lemcke
                        barrierefreies Webdesign

                        Comment


                        • #13
                          Hi Marcus,
                          ich habe ein Buch, Delphi 6 für Profis.
                          Da ist ein Kapitel über Botschaftsbehandlung.
                          Ich 'klau' aber auch viel, indem ich einfach bei Fremdkomponenten recherchiere, wie es andere machen.
                          Es freut mich, dass ich dir helfen konnte.
                          Gruß, Fran

                          Comment


                          • #14
                            Hi Frank,

                            den tipp merke ich mir!
                            in sachen komponenten-entwicklung bin ich total grün,
                            aber ich glaube das lohnt sich, sich da mal rein zu hängen!

                            hat meinen code nun nicht unnötig aufgebläht!

                            vielen dank nochmal!

                            Gruß

                            Marku
                            Herzliche Grüße

                            Markus Lemcke
                            barrierefreies Webdesign

                            Comment

                            Working...
                            X