Announcement

Collapse
No announcement yet.

Frage zu TDBGrid

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

  • Frage zu TDBGrid

    Hi,

    ich habe ein TDBGrid und als Option dgRowSelect=true. Gibt es eine Möglichkeit bei einem Doppelklick herauszufinden in welche Spalte ich geklickt habe? SelectedIndex und SelectedField funzen ja bei dgRowSelect nicht.
    Vielen Dank

    Andreas

  • #2
    Salve!<br>

    Row und Col geben die aktive Zelle an.<br>

    Gruß Fre

    Comment


    • #3
      Hmm. Beim TDBGrid gibts aber kein Row und Col!?

      Andrea

      Comment


      • #4
        <html>

        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
        <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
        <meta name="ProgId" content="FrontPage.Editor.Document">
        <title>Neue Seite 2</title>
        </head>

        <body>

        <p>Das Ereignis OnCellClick wird ausgelöst, wenn der Benutzer die Maustaste nach dem Klicken auf eine Zelle des Gitters losläßt.<br>
        <br>
        typedef void __fastcall (__closure *TDBGridClickEvent)(TColumn* Column);<br>
        __property TDBGridClickEvent OnCellClick = {read=FOnCellClick, write<br>
        =FOnCellClick};<br>
        <br>
        Beschreibung<br>
        <br>
        Mit einer Ereignisbehandlungsroutine für OnCellClick können Sie spezielle Aktionen durchführen, wenn der Benutzer auf eine Zelle des datensensitiven Gitters klickt. Der Parameter Column bezeichnet das TColumn-Objekt, das der Spalte entspricht, auf der sich die Maus beim Loslassen der linken Maustaste befand.<br>
        <br>
        OnCellClick wird ausgelöst, wenn der Benutzer die Maustaste losläßt. Mit dem Ereignis OnColEnter können Sie Aktionen durchführen, wenn der Benutzer die Maustaste drückt.<br>
        <br>
        OnCellClick wird nicht ausgelöst, wenn die Maustaste nach einer Größenänderung einer Zeile oder Spalte losgelassen wird, oder wenn die Zelle bearbeitet wird.</p>
        <p>&nbsp;</p>
        <p>Soweit die Hilfe. Eine weitere Möglichkeit: Orden dem DBGrid ein Popupmenü
        zu, dort kannst Du zum Beispiel den Menüpunkt &quot;Hintergrundfarbe&quot;
        einbauen:</p>
        <pre>void __fastcall TForm1::Hintergrundfarbe1Click(TObject *Sender)
        {
        int i=DBGrid1->SelectedIndex;
        ColorDialog1-&gt;Color=DBGrid1-&gt;Columns-&gt;Items[i]-&gt;Color;
        if(ColorDialog1-&gt;Execute())
        {
        DBGrid1-&gt;Columns-&gt;Items[i]-&gt;Color=ColorDialog1-&gt;Color;
        }
        }</pre>
        <p>Gruß - Günther</p>

        </body>

        </html&gt
        Günther

        Comment


        • #5
          Hallo Günther,

          OnCellClick übergibt mir immer nur die erste Spalte. Liegt wohl daran das dgRowSelect=true ist.

          Andrea

          Comment


          • #6
            Also ich habe mal selbst auch eine Lösung versucht. Nämlich so:<br><br>
            <pre>void __fastcall TMainForm::OnMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
            {
            int newwidth, oldwidth = 0;<br>

            for (int i = 0; i < theGrid->Columns->Count; i++)
            {
            newwidth = oldwidth + theGrid->Columns->Items[i]->Width;
            if (X > oldwidth && X < newwidth)
            {
            ColID = i;
            }
            oldwidth = newwidth;
            }
            }</pre>

            Ich weiß nicht ob das die beste Lösung ist, auf jeden Fall funktioniert sie.
            Was meint Ihr?

            Andrea

            Comment


            • #7
              Oh, das mit dgRowSelect hatte ich übersehen :-
              Günther

              Comment


              • #8
                Hallo,
                hier noch ein kleiner Nachtrag:
                ich habe mir ne neue Komponente für DBGrid gemacht und von TCustomDBGrid abgeleitet. Hier kann man auf Col und Row zugreifen und auch die die Koordinaten der angeclickten Zelle von Typ TRect erhalten. Wenn jemand Interesse hat mail ich die mal zu.
                Bye - Pete

                Comment

                Working...
                X