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

在Grid的CELL中按一下出現另一個Grid的問題?

答題得分者是:Mickey
skurama
中階會員


發表:88
回覆:127
積分:73
註冊:2002-07-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-02-11 11:29:49 IP:61.219.xxx.xxx 未訂閱
請問: 以前在用PowerBuilder時,有一個功能,就是在Cell點下去時, 會出現另一個Grid的元件。 目前我也想用Delphi做出類似的功能, 我的想法是用直接動態產生一個Grid (或一個Form上放一個Grid) 在將該Grid連到一個TQuery中, 傳使用者點選該Cell時,讓那個Grid的Query跑SQL並顯示出來。 可是比較麻煩的要計算目前該Grid要放在什麼位置, 當使用者點的Cell在上面時,則放在該Cell下, 但如果Cell太下面時,則要放在上面,要做這個判斷滿麻煩的 請問是否有人做過類似的內容,或有更好的方法或元件本身有提供, 是否可以說明一下,謝謝~~~ ---------------- 初出芧房程設師, 左鍵右鼠寫程式, 日扣夜寫眼框溼, 望能早成系分師。 ----------------
------
----------------
初出芧房程設師,
左鍵右鼠寫程式,
日扣夜寫眼框溼,
望能早成系分師。
----------------
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-02-11 12:22:57 IP:211.72.xxx.xxx 未訂閱
引言: 以前在用PowerBuilder時,有一個功能,就是在Cell點下去時, 會出現另一個Grid的元件。
Hi, 你可以試一下 InfoPower 中的 TwwDBGrid 配合 TwwDBExpandButton 來使用即可達到你的要功能!! InfoPower 是 3rd party component , 是 woll2woll 公司的作品, 相當好用!! 其公司的網址在 http://www.woll2woll.com/
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-02-11 12:26:41 IP:61.219.xxx.xxx 未訂閱
Sample Code as following : where "TMyCalendar" is a component 繼承自 "TCustomGrid"
//procedure TMyDBgrid.CellClick(Column: TColumn);
procedure TMyDBgrid.ColEnter;
var rec:TRect;abstop,absleft:integer;tempdt:TDateTime;
begin
   inherited ColEnter;
   rec:=CellRect(Col,Row);
   if ((not(csDesigning in ComponentState)) and
       (assigned(self.Datasource)) and
       (assigned(self.Datasource.Dataset)) and
       (Self.Datasource.Dataset.active) and
       (SelectedField.DataType in [ftDate,ftDateTime])) then begin
      TState:=Self.Datasource.Dataset.State;
      abstop:=GetAbsTop(TControl(Self));
      absleft:=GetAbsLeft(TControl(Self));
      if not assigned(FSelDates) then begin
         FSelDates:=TMyCalendar.Create(Owner);
         FSelDates.GridLineWidth:=0;
         FSelDates.ShortDateName:=True;
         FSelDates.Font.Size:=9;
         FSelDates.Height:=100;FSelDates.Width:=172;
         if (abstop Rec.Bottom GridLineWidth 101) <
            TForm(FSelDates.Owner).Height then
            FSelDates.top:=abstop rec.Bottom GridLineWidth 1
         else FSelDates.top:=abstop rec.top-GridLineWidth-101;
         if (absLeft rec.Right 1-FSelDates.Width)>0 then
            FSelDates.Left:=absLeft rec.Right 1-FSelDates.Width
         else FSelDates.Left:=absleft;
//         TForm(Owner).InsertControl(FSelDates);
         FSelDates.Parent:=TForm(Owner);
         FSelDates.SetFocus;
         FSelDates.OnAfterClick:=CalendarDateChange;
         FSelDates.OnExit:=PickerOnExit;
         if SelectedField.AsString<>'' then
            try
               tempdt:=strtodatetime(SelectedField.AsString);
               Fseldates.CalendarDate:=trunc(tempdt);
            except
               Fseldates.CalendarDate:=Date;
            end;
         end
      else begin
         if (abstop Rec.Bottom GridLineWidth 101) <
            TForm(FSelDates.Owner).Height then
            FSelDates.top:=abstop rec.Bottom GridLineWidth 1
         else FSelDates.top:=abstop rec.top-GridLineWidth-101;
         if (absLeft rec.Right 1-FSelDates.Width)>0 then
            FSelDates.Left:=absLeft rec.Right 1-FSelDates.Width
         else FSelDates.Left:=absLeft;
         if SelectedField.AsString<>'' then
            try
               tempdt:=strtodatetime(SelectedField.AsString);
               Fseldates.CalendarDate:=trunc(tempdt);
            except
               Fseldates.CalendarDate:=Date;
            end;
         FselDates.show;
         FSelDates.SetFocus;
         self.DataSource.edit;
      end;
   end
   else if ((assigned(FSeldates))and
            (FSeldates.Showing)) then begin
            Self.SetFocus;
            FSeldates.Hide;
   end;
end;    
/* 使用中文很辛苦,中華男兒當自強 */
skurama
中階會員


發表:88
回覆:127
積分:73
註冊:2002-07-22

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-02-11 12:50:34 IP:61.219.xxx.xxx 未訂閱
哈~~~謝謝兩位的幫忙~~ 因為InfoPower 好像要coco吧~~ 分數也只了給一個人, 所以給Mickey大大, 這邊也感謝timhuang大大 ---------------- 初出芧房程設師, 左鍵右鼠寫程式, 日扣夜寫眼框溼, 望能早成系分師。 ----------------
------
----------------
初出芧房程設師,
左鍵右鼠寫程式,
日扣夜寫眼框溼,
望能早成系分師。
----------------
系統時間:2024-10-01 17:47:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!