線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1430
推到 Plurk!
推到 Facebook!

【StringGrid的问题】

尚未結案
iamnick
一般會員


發表:5
回覆:15
積分:4
註冊:2005-05-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-03 11:17:07 IP:220.202.xxx.xxx 未訂閱
请问各位 怎么样实现从STRINGGRED中选取多行后加入另外一个STRINGGRED并且将选中的ROW删掉!!
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-03 12:03:46 IP:61.222.xxx.xxx 未訂閱
參考 http://delphi.ktop.com.tw/topic.php?topic_id=71765 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=72350 ~~~~~~~~~~~ 難得聰明,常常糊塗。 ~~~~~~~~~~~
iamnick
一般會員


發表:5
回覆:15
積分:4
註冊:2005-05-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-03 13:51:36 IP:220.202.xxx.xxx 未訂閱
好的,我去看看先,不明白的我再回来问前辈!!!
iamnick
一般會員


發表:5
回覆:15
積分:4
註冊:2005-05-26

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-03 13:57:47 IP:220.202.xxx.xxx 未訂閱
前辈,为什么你给的例子都是DBGrid的例子啊,我想看看关于stringgrid的例子!!
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-03 15:54:49 IP:61.222.xxx.xxx 未訂閱
Sorry ! 最近越來越迷糊 ...... 要實現 TStringGrid MultiSelect 事實上,是不難的。 但有點繁雜。並需自行判斷複選的動作 如:Ctrl or Shift 並在DrawCell 處理反白。 現在沒有時間,無法進一步提供給你的範例碼。 若懶得改寫。 建議 找一下這方面的加強元件。 或使用 ListView (List 模式) 參考 ~~~~~~~~~~~ 難得聰明,常常糊塗。 ~~~~~~~~~~~
iamnick
一般會員


發表:5
回覆:15
積分:4
註冊:2005-05-26

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-03 15:56:20 IP:220.202.xxx.xxx 未訂閱
有人可以帮帮我吗?
iamnick
一般會員


發表:5
回覆:15
積分:4
註冊:2005-05-26

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-06-03 16:06:57 IP:220.202.xxx.xxx 未訂閱
谢谢,前辈 我现在是接着别人的程序接着写的,如果换元件的话,需要改很多逻辑,时间上是来不及了!! 郁闷啊....
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-06-03 16:23:51 IP:61.222.xxx.xxx 未訂閱
我臨時寫一下。 只判斷 Ctrl 複選。 參考一下。
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Grids;    type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    procedure FormCreate(Sender: TObject);
    procedure StringGrid1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
  private
    SelectedRows : Array of Boolean;
  public
    { Public declarations }
  end;    var
  Form1: TForm1;    implementation    {$R *.DFM}    procedure TForm1.FormCreate(Sender: TObject);
begin
  SetLength(SelectedRows,StringGrid1.RowCount);
end;    procedure TForm1.StringGrid1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  I :integer;
  ARect:TRect;
  OldSelected:Boolean;
begin
  if (ssCtrl in Shift) and (Button=mbLeft) then
  begin
    SelectedRows[StringGrid1.Row] := True;
  end else for I:=0 to StringGrid1.RowCount-1 do
           begin
             OldSelected := SelectedRows[I];
             SelectedRows[I] := I = StringGrid1.Row;
             if SelectedRows[I]<> OldSelected then
             begin
               ARect := StringGrid1.CellRect(0,I);
               With ARect do ARect := Rect(0,Top,StringGrid1.Width,Bottom);
               Windows.InvalidateRect(StringGrid1.Handle,@ARect,True);
             end;
           end;
end;    procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  if (ACol>0) and (ARow>0) and SelectedRows[ARow] then
    With StringGrid1 do
    begin
      Canvas.Brush.Color := ClHighLight;
      Canvas.Font.Color  := ClHighLightText;          Canvas.TextRect(Rect, Rect.Left 2, Rect.Top 2, Cells[ACol, ARow]);
    end;
end;
~~~~~~~~~~~ 難得聰明,常常糊塗。 ~~~~~~~~~~~
系統時間:2024-07-03 1:10:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!