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

動態的MainMenu的設定與開啟執行檔的關聯性

答題得分者是:pceyes
rany
一般會員


發表:15
回覆:26
積分:8
註冊:2007-05-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-06-25 09:58:35 IP:220.132.xxx.xxx 訂閱
如何利用資料庫設定動態的MainMenu下拉選項
http://delphi.ktop.com.tw/board.php?cid=30&fid=1498&tid=94063

因為以上問題已逾結案期限多日,故先行結案。但仍有些問題想請教,再煩請提供參考~QQQ
1.感謝goat提供了程式碼,可是出現錯誤不知如何修改
[Error] Unit1.pas(136): Undeclared identifier: 'forbidden
[Error] Unit1.pas(137): Undeclared identifier: 'miTree'
以及那個//根據Menu的Caption,再去抓對應的執行檔名稱去執行就可以了是不是像這樣??

[code delphi]
procedure TForm1.miTreeClick(Sender: TObject);
begin
qryPROGID.Close;
qryPROGID.SQL.TEXT:='SELECT 程式名稱 FROM IPPFMENU WHERE IMU_NAME =顯示名稱 ';
qryPROGID.Open;
ShellExecute(handle,nil,(pchar('執行檔路徑' qryPROGID.FieldByName('IMU_PROGID').Value '.exe\')),nil,nil,Sw_shownormal);
end;
[/code]


2.感謝pceyes幫我找到了之前的紀錄,測試後Menu已經可以依照類別看到所有下拉的顯示名稱,但是當我Click時卻沒反應,請問我是哪裡設定有問題嗎?
[code delphi]
procedure TForm1.MenuItemAdd;
var
I:integer;
begin
qryIPPFMENU.Close;
qryIPPFMENU.SQL.TEXT:=' SELECT *FROM IPPFMENU ';
qryIPPFMENU.Open;
setlength(MyMenu,qryIppfMenu.recordcount);
qryIPPFMENU.first;
I:=StrToInt(Copy(qryIPPFMENU.fieldbyname('IMU_KIND').Value,2,1));
while not qryIPPFMENU.Eof do
begin
MyMenu[i]:=TMenuItem.create(Application);
MyMenu[i].Caption:=qryIPPFMENU.fieldbyname('IMU_NAME').Value;
MyMenu[i].Visible:=true;
MyMenu[i].OnClick:= MenuItemClick;
IF qryIPPFMENU.fieldbyname('IMU_KIND').Value='N1' THEN N1.add(MyMenu[i])
ELSE IF qryIPPFMENU.fieldbyname('IMU_KIND').Value='N2' THEN N2.add(MyMenu[i])
ELSE IF qryIPPFMENU.fieldbyname('IMU_KIND').Value='N3' THEN N3.add(MyMenu[i]);
qryIPPFMENU.next;
end;
end;
procedure TForm1.MenuItemClick(Sender: TObject);
VAR iBit : integer;
begin
iBit:=LENGTH((sender as tMenuItem).caption)-4; //因為顯示名稱會出現快速鍵
qryPROGID.Close;
qryPROGID.SQL.TEST:='SELECT IMU_PROGID FROM IPPFMENU WHERE IMU_NAME =''' COPY((sender as tMenuItem).caption,1,iBit) ''' ';
qryPROGID.Open;
ShellExecute(handle,nil,(pchar('執行檔路徑' qryPROGID.FieldByName('IMU_PROGID').Value '.exe\')),nil,nil,Sw_shownormal);

[/code]
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-06-25 12:41:15 IP:124.199.xxx.xxx 訂閱
  1. procedure TForm1.MenuItemClick(Sender: TObject);
  2. VAR iBit : integer;
  3. sfilename : string;
  4. begin
  5. iBit:=LENGTH((sender as tMenuItem).caption)-4; //因為顯示名稱會出現快速鍵
  6. qryPROGID.Close;
  7. qryPROGID.SQL.TEST:='SELECT IMU_PROGID FROM IPPFMENU WHERE IMU_NAME =''' COPY((sender as tMenuItem).caption,1,iBit) ''' ';
  8. qryPROGID.Open;
  9. showmessage('執行檔路徑' qryPROGID.FieldByName('IMU_PROGID').Value '.exe\')); //檢查全路徑檔名是否正確。
  10. sfilename := '執行檔路徑' qryPROGID.FieldByName('IMU_PROGID').Value '.exe\';
  11. ShellExecute(handle,nil,(pchar(sfilename),nil,nil,Sw_shownormal);
------
努力會更接近成功
rany
一般會員


發表:15
回覆:26
積分:8
註冊:2007-05-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-06-25 14:28:31 IP:220.132.xxx.xxx 訂閱
Dear pceyes,

真是謝謝你呦,已經解決囉
連續兩次拔刀相助,果然是全路徑出了問題唄!! :P
.......QQQ
系統時間:2024-04-26 4:35:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!