全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1271
推到 Plurk!
推到 Facebook!

DBgrid和StringGrid使用的兩個問題?

尚未結案
mathewzhao
中階會員


發表:121
回覆:164
積分:67
註冊:2003-04-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-09-28 16:42:52 IP:219.145.xxx.xxx 未訂閱
各位先進好! 請教兩個問題: Q1:如何將DBgrid一 個Column中的資料顯示為'****'? Q2:在StringGrid的cell[0,1]中寫入資料,當Focus離開cell[0,1]時, 如何立即將cell[0,1]的資料Copy to cell[0,5]? 謝謝!
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-28 21:57:46 IP:202.39.xxx.xxx 未訂閱
1.試試設定 TField.DisplayFormat 為 **** 2.
var // 用全域變數記錄上個 Focus 所在的 Cell 的 Col/Row
  iPrevCol: integer = 0;
  iPrevRow: integer = 0;    procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
  var CanSelect: Boolean);
begin
  if (iPrevCol = 0) and (iPrevRow = 1) then
    StringGrid1.Cells[0, 5] := StringGrid1.Cells[0, 1];      iPrevCol := ACol;
  iPrevRow := ARow;
end;
--- 歡迎光臨 KTop 研究院
mathewzhao
中階會員


發表:121
回覆:164
積分:67
註冊:2003-04-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-29 10:06:28 IP:219.145.xxx.xxx 未訂閱
感謝前輩hager的回應  我使用ADOquery(delphi5,DB:Access),沒有找到TField.DisplayFormat. 現在找到一個方法,但是還有些問題不能將某一Column顯示為'********',Code如下: 
procedure TForm1.GetFieldText(Sender: TField; var Text: string;
DisplayText: Boolean);
begin
  Text :='********';
end;    procedure TForm1.ADOQuery1AfterOpen(DataSet: TDataSet);
var
  I: Integer;
begin
  with Dataset do
  for I := 0 to FieldCount - 1 do
     if Fields[I].FieldName='Pass' then
        with Fields[I] do
          OnGetText := GetFieldText;
end;
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-09-29 10:25:38 IP:203.222.xxx.xxx 未訂閱
lol 你不會不要 select 那個欄位,這樣不就好了? 如果你硬要顯示 '****' ,那自己加入不就得了 而要是你一定要那個欄位的資料,那就選取但不要顯示囉 而 '****' 就用一個本機的 fild 來假裝就好了啊! 這樣也不過多一個 fild ,但可以達到你的要求又不會減慢執行速度與改寫煩雜的程式碼
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-09-29 10:44:23 IP:202.39.xxx.xxx 未訂閱
在 TQuery 上點兩下, 出現一 Fields Editor 在 Fields Editor 上點右鍵, 加入您要的 Field(s) 然後點一下那個 Field, 按 F11, 就可以設定該 Field 的 DisplayFormat    --- 歡迎光臨 KTop 研究院
mathewzhao
中階會員


發表:121
回覆:164
積分:67
註冊:2003-04-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-11-27 16:40:01 IP:61.150.xxx.xxx 未訂閱
感謝syntax和hager前輩的指引. 上面syntax前輩提供的方法簡單直接,我找到另一方法補充如下:     //將'Password' column 的資料顯示為'********'  
 procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if Column.FieldName ='Password' then
     begin
        DBgrid1.Canvas.FillRect(Rect);
        DBgrid1.Canvas.TextOut(Rect.Left,Rect.Top,'********');
     end
end; 
 
系統時間:2024-07-02 2:49:28
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!