Announcement

Collapse
No announcement yet.

DBGrid und Mausrad

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

  • DBGrid und Mausrad

    Hallo,

    ich verwende in einer Awendung ein DBGrid!
    wenn ich nun nicht über den DBNavigator mich bewege und auch nicht über die scrolleisten, sondern über das Mausrad und ich klicke nachdem scrollen auf einen datensatz, dann gibt es plötzlich <b>zwei</b> Datensatzzeiger!
    mache ich dann das noch paar mal, werden die datensatzzeiger immer mehr!
    was kann man dagegen tun?

    Gruß

    Markus
    Herzliche Grüße

    Markus Lemcke
    barrierefreies Webdesign

  • #2
    im onclick Ereignis mygrid.refresh;
    vieleicht auch besser im mouseup-ereignis

    gruß Andrea

    Comment


    • #3
      Hi Markus,
      .
      hast Du einen Maustreiber für die Maus installiert? Welches BS verwendest Du?
      Diesen Fall hatte ich bisher nur bei einer Dienst-Anwendung mit Grid, bzw. bei einem Windows ohne passenden Treiber.
      .
      @Andreas
      Wird da nicht auch die Tabelle refresht oder nur das Grid neugezeichnet

      Comment


      • #4
        Hallo Michael,
        Auszug aus der hilfe:

        Mit Refresh kann das Steuerelement sofort neu gezeichnet werden. Refresh ruft dazu die Methode Repaint auf. Sie können wahlweise Refresh oder Repaint verwenden

        Comment


        • #5
          @andreas
          ich teste es mal!
          @michael
          der effekt kommt nicht nur auf meinem rechner vor, sondern auch bei meinem kollegen. somit denke ich, kann es am bs oder maustreiber nicht liegen
          Herzliche Grüße

          Markus Lemcke
          barrierefreies Webdesign

          Comment


          • #6
            habe es gerade nochmal getestet!
            passiert auch, wenn man nur das mausrad dreht!
            refresh brachte nix
            Herzliche Grüße

            Markus Lemcke
            barrierefreies Webdesign

            Comment


            • #7
              Hallo,

              bevor ich eine neue Diskussion eröffne mache ich hier weiter!
              unsere kunden haben den wunsch, dass überall wo man scrollen kann (DBGrid, Listbox, Listview usw. ) man mit dem mausrad scrollen kann! hat damit irgendjemand erfahrung?
              kann man ne allgemeine prozedur schreiben mit der es dann bei jeder komponente geht oder geht es gar nicht?
              ich verwende Delphi 6!

              gruß

              Marku
              Herzliche Grüße

              Markus Lemcke
              barrierefreies Webdesign

              Comment


              • #8
                ich habe was im netz entdeckt und so umgeschrieben:

                <pre>
                //Mausrad umleiten in hoch und runter
                procedure MouseMessage(var Msg: TMsg; var Handled: Boolean);
                var
                i: SmallInt;
                begin
                if not MouseWheelExists then exit;
                if Msg.message = WM_MOUSEWHEEL then
                begin
                Msg.message := WM_KEYDOWN;
                Msg.lParam := 0;
                i := HiWord(Msg.wParam);
                if i > 0 then
                Msg.wParam := VK_UP
                else
                Msg.wParam := VK_DOWN;
                Handled := False;
                end;
                end;
                </pre>
                und dann so eingebaut:

                <pre>
                //Abfragen ob HändlerFormular offen ist und ob es minimiert wurde
                procedure TFormKatHaendler.AppMessage(var Msg: TMsg; var Handled: Boolean);
                begin
                if FormKatHaendler <> nil then
                if (FormKatHaendler.WindowState = wsnormal) or (FormKatHaendler.WindowState = wsmaximized)
                then Minimized := false
                else if FormKatHaendler.WindowState = wsminimized then
                if not Minimized then
                begin
                Minimized := true;
                if form_mat <> nil then
                begin
                //Eingabefeld aktivieren, damit nachher grid reagiert!!!
                form_mat.EF_VkBrutto.SetFocus;
                end;
                end;
                <b>MouseMessage( Msg, Handled);</b>
                end;
                </pre>

                das problem ist jetzt, dass ich jetzt in jedem formular eine AppMessage prozedur anlegen müsste!
                geht das auch anders?

                gruß

                Marku
                Herzliche Grüße

                Markus Lemcke
                barrierefreies Webdesign

                Comment


                • #9
                  ich habe es!
                  im hauptformular der anwendung mache ich folgendes:

                  <pre>
                  procedure TMainForm.AppMessage(var Msg: TMsg; var Handled: Boolean);
                  begin
                  MouseMessage( Msg, Handled);
                  end;

                  ....

                  procedure TMainForm.FormPaint(Sender: TObject);
                  begin
                  if FirstPaint then
                  begin
                  Application.OnMessage := AppMessage;
                  end;
                  end;
                  </pre>

                  bei uns steht es halt im onpaint, andere nehmen oncreate vom formular!!
                  es fusioniert auf jeden fall dann in der ganzen anwendung!

                  gruß

                  marku
                  Herzliche Grüße

                  Markus Lemcke
                  barrierefreies Webdesign

                  Comment

                  Working...
                  X