Results 1 to 3 of 3

Thread: dbgrid regel verspringt

  1. #1
    Senior Member
    Join Date
    Jan 2005
    Location
    Waspik
    Posts
    579

    dbgrid regel verspringt

    Ik heb een dbgrid die gevuld wordt m.b.v. een query. (Via een datasource).
    De velden die worden getoond zijn boolean velden en worden weergegeven door een checkbox.
    Stel ik scroll in de dbgrid helemaal naar onderen en klik vervolgens op een checkbox in de derde regel van onderen. Het veld waarop wordt geklikt wordt netjes aan of uitgevinkt en daarna verspringt de dbgrid. De regel waarin is gemuteerd springt naar onderen zodat het onderste regel in de dbgrid wordt. (De regel waarop geklikt is blijft wel de actieve regel).
    Dit automatisch verspringen komt waarschijnlijk doordat ik de mutatie doorvoer en de dbgrid meteen weer opnieuw vul.

    Kan ik het verspringen voorkomen? Bijvoorbeeld een soort van bookmark instellen?

    De code die wordt uitgevoerd als op de dbgrid wordt geklikt is:

    Code:
    procedure DbGridCellClick(Column: TColumn);
    var
      sBool, sVeldnaam : String;
      Rownumber, i     : Integer;
    begin
      if Main_Gvsx_Frm.ODBCConnection1.Connected then
        begin
          i := Column.Index;
          sBool :=  Main_Gvsx_Frm.DBGrid1.Columns[i].Field.AsString;    //Tekst uit de cell halen
          sVeldnaam:= Main_Gvsx_Frm.DBGrid1.Columns[1].Field.AsString;  //Tekst uit de cell halen
          Rownumber := Main_Gvsx_Frm.SQLQuery1.RecNo;  //"regelnummer"
    
          if i = 2 then //field_is_copy  --> afhankelijk van de volgorde van opvragen. (Dit moet flexibel worden)
            begin
              if sBool = 'False' then
                begin
                  with Main_Gvsx_Frm.SQLQuery1 do
                    begin
                      Close;
                      SQL.Clear;
                      SQL.Add('update sys_pssprts_flds_defs set field_is_copy = True where field_Name = '''+  sVeldnaam + '''');
                      ExecSQL;
                      Close;
    //Procedure van maken, komt x maal voor
                      SQL.Clear;
                      SQL.Add('select a.passport_name, b.field_name, b.field_is_copy, b.field_is_locked, b.field_is_visible');
                      SQL.Add('from sys_pssprts_defs a, sys_pssprts_flds_defs b');
                      SQL.Add('where a.passport_id=b.passport_id');
                      SQL.Add('order by a.passport_name, b.field_name');
                      Active:=True;
                    end;
                end
              else
                begin
                  with Main_Gvsx_Frm.SQLQuery1 do
                    begin
                      Close;
                      SQL.Clear;
                      SQL.Add('update sys_pssprts_flds_defs set field_is_copy = False where field_Name = '''+  sVeldnaam + '''');
                      ExecSQL;
                      Close;
    
                      SQL.Clear;
                      SQL.Add('select a.passport_name, b.field_name, b.field_is_copy, b.field_is_locked, b.field_is_visible');
                      SQL.Add('from sys_pssprts_defs a, sys_pssprts_flds_defs b');
                      SQL.Add('where a.passport_id=b.passport_id');
                      SQL.Add('order by a.passport_name, b.field_name');
                      Active:=True;
                    end;
                end;
              Main_Gvsx_Frm.SQLQuery1.MoveBy(Rownumber-1);  //Hiermee blijft de rij actief waarop geklikt is
            end;
        end;

  2. #2
    Waarom doe je die updates zelf? Als je een dataset gebruikt, de waarde daarin wijzigt en dat opslaat lijkt me dat simpeler. Je hoeft dan ook de query niet opnieuw uit te voeren en je grid blijft ook staan waar de gebruiker 'm verwacht.
    Marcel

  3. #3
    Senior Member
    Join Date
    Jan 2005
    Location
    Waspik
    Posts
    579
    Dan ga ik opzoeken hoe ik op de juiste manier een dataset moet gebruiken.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •