1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

چگونه می توان چندین سطر را با Shift در DBGrid انتخاب کرد؟

شروع موضوع توسط para3to ‏11/10/11 در انجمن Delphi

  1. کاربر ارزشمند❤

    تاریخ عضویت:
    ‏17/5/11
    ارسال ها:
    39,257
    تشکر شده:
    47,234
    امتیاز دستاورد:
    170
    چگونه می توان چندین سطر را با Shift در DBGrid انتخاب کرد؟
    property BM1: TBookmark read FBM1 Write SetBM1;

    property BM2: TBookmark read FBM2 Write SetBM2;

    procedure Markieren(Sender: TObject);
    function Shiftgedr: Boolean;


    procedure TForm1.Markieren(Sender: TObject);
    var
    Richtung: string;
    TempBM: TBookmark;
    begin
    with (Sender as TDBGRID).DataSource.Dataset do
    begin
    if (BOF and EOF) then
    Exit;
    DisableControls;
    try
    try
    GotoBookmark(BM1);
    case DBGrid1.DataSource.DataSet.CompareBookmarks(BM1, BM2) of
    -1: Richtung := 'Unten';
    1: Richtung := 'Oben';
    0: Richtung := 'Gleich';
    end;
    TempBM := DBGrid1.DataSource.DataSet.GetBookmark;
    while DBGrid1.DataSource.DataSet.CompareBookmarks(BM2, TempBM) <> 0 do
    begin
    DBGrid1.SelectedRows.CurrentRowSelected := True;
    if Richtung = 'Unten' then
    Next
    else
    Prior;
    TempBM := DBGrid1.DataSource.DataSet.GetBookmark;
    end;
    finally
    FreeBookmark(tempbm);
    end;
    finally
    EnableControls;
    end;
    end;
    end;

    function TForm1.Shiftgedr: Boolean;
    var
    State: TKeyboardState;
    begin
    GetKeyboardState(State);
    Result := ((State[VK_SHIFT] and 128) <> 0);
    end;

    begin
    if not Shiftgedr then
    Merke1 := nil;

    if Merke1 = nil then
    Merke1 := DBGrid1.DataSource.DataSet.GetBookmark
    else
    Merke2 := DBGrid1.DataSource.DataSet.GetBookmark;

    if (Merke1 <> nil) and (Merke2 <> nil) then
    begin
    if Shiftgedr then
    begin
    Markieren(Sender);
    end;
    end;
    end;