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

把窗体添加到组件面板上遇到的问题

尚未結案
zzmbeyond01
中階會員


發表:98
回覆:167
積分:53
註冊:2003-09-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-02 21:17:09 IP:211.90.xxx.xxx 未訂閱
各位先进:    我打算把一个更改长度单位和图形输出各式、大小的对话框放到组件面板上。    源码如下:  
     unit OptionForm;    interface    uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;    type
  TOptionsForm = class(TForm)
    Panel1: TPanel;
    PrintGroupBox: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    FormatCombo: TComboBox;
    RulerUnitCombo: TComboBox;
    HeightText: TEdit;
    WidthText: TEdit;
    CancelBtn: TButton;
    OKBtn: TButton;
    GroupBox2: TGroupBox;
    Label6: TLabel;
    procedure FormCreate(Sender: TObject);      private
    { Private declarations }      public
    { Public declarations }
  end;    //封装窗体
  TCustOptionsForm =class(TComponent)
  private
   OptionsForm:TOptionsForm;
   FRuleUnitString : string;
   FExportHeight : double;      //储存要打印窗体的输出宽和高
   FExportWidth :double;
   FExportFormatString :  string;   //输出格式名称
   
  public
   function Execute:Boolean;     //加载对话框
  published
   property RuleUnitString :String read FRuleUnitString write FRuleUnitString;
   property ExportHeight : double read  FExportHeight write FExportHeight;
   property ExportWidth :double read  FExportWidth write FExportWidth;
   property ExportFormatString: string read FExportFormatString  write FExportFormatString ;
   end;      
implementation    {$R *.dfm}    function TCustOptionsForm.Execute: Boolean;
begin
//创建窗体实例
 OptionsForm:=TOptionsForm.Create(application);
 try
 result:=false;
 if OptionsForm.ShowModal= mrOK then

//**********************************
begin                                       //为什么这里执行不到呢?
  FRuleUnitString:= OptionsForm.RulerUnitCombo.Text;
  FExportHeight:= strtofloat( OptionsForm.HeightText.Text);
  FExportWidth:= strtofloat(OptionsForm.WidthText.Text);
  FExportFormatString:=OptionsForm.FormatCombo.Text;
 end;
  result:=true
//**********************************
 
finally
 OptionsForm.Free;
 end;
end; 
             
procedure TOptionsForm.FormCreate(Sender: TObject);
var
  i:integer;
begin
                             
//往RulerUnitCombo box中添加地图的测量单位 unit
    for i:=0 to 1 do
    begin
       Case i  of
          0:
            RulerUnitCombo.Items.Add('Mile');
          1:
            RulerUnitCombo.Items.Add('KiloMeter'); 
    end; //CASE
       RulerUnitCombo.ItemIndex := 0;
    end;    //END FOR                               //往formatcombo box中添加地图的格式
    for i:=0 to 1 do
    begin
      Case i  of
         0:
         FormatCombo.Items.Add('Windows Metafile (*.wmf)');
         1:
         FormatCombo.Items.Add('Windows Bitmap (*.bmp)');
      end;   //CASE
         FormatCombo.itemindex:=0;
    end;   //END FOR    end;    end.
请各位大侠指点 谢谢!
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-02 21:44:30 IP:211.20.xxx.xxx 未訂閱
由於你的OptionsForm在確定或取消後沒設定其傳回值故而 OptionsForm.ShowModal永遠不等於mrOK 所以才執行不到
兩種方式設定
1.在屬件檢視器中設定 OKBtn.ModalResult := mrOK;
       CancelBtn.ModalResult := mrCancel;
2.直接在OKBtn及CancelBtn的OnClick事件中設定
    ModalResult := mrOk;及
    ModalResult := mrCancel;    之後即可用以判斷式檢測了
if OptionsForm.ShowModal= mrOK then
    .......
祝 好運 發表人 - chance36 於 2004/02/02 21:45:35
zzmbeyond01
中階會員


發表:98
回覆:167
積分:53
註冊:2003-09-07

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-02 23:44:28 IP:211.90.xxx.xxx 未訂閱
Chance36 你好: 我采用您的二个建议,获得成功,谢谢! 我想再问一下, 我在
 procedure register;
implementation
。。。
procedure register
begin
 registercomponents('MyForm',[TCustOptionsForm]);
end;
我选择component->install component。。 并安装编译后, 为什么在组件面板上看不到我的对话框窗体控件呢? 谢谢大侠!
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-02-03 00:18:43 IP:203.204.xxx.xxx 未訂閱
引言: 我选择component->install component。。 并安装编译后, 为什么在组件面板上看不到我的对话框窗体控件呢? 谢谢大侠!
請確認組件面板是否有[MyForm]的標籤頁 若無表示安裝失敗 (原因很多) 若有則切換過去 請用滑鼠在第一個元件位置移動看看 是否有按鈕感應(應該會有)即按鈕浮起現象 ok 元件安裝上去了 結果是你沒為此元件設計圖示罷了 僅管如此,你的元件仍然可以正常動作,
zzmbeyond01
中階會員


發表:98
回覆:167
積分:53
註冊:2003-09-07

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-02-04 10:40:57 IP:211.90.xxx.xxx 未訂閱
Chance36: 你好!    在组件面板中添加了MySETFORM页 1. 我在源程序中增加过程 procedure register; begin registercomponents('MySETFORM',[TCustOptionsForm]); end; 编译之后,安装TCustOptionsForm.dpk包后,在组件面板上找不到mysetform页。 而且我点击Options 选项,查看TCustOptionsForm.dpk包的components属性,其列表框为空,请问这是为什么?    < >< >
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-02-04 18:09:10 IP:211.20.xxx.xxx 未訂閱
引言: Chance36: 你好! 在组件面板中添加了MySETFORM页 1. 我在源程序中增加过程 procedure register; begin registercomponents('MySETFORM',[TCustOptionsForm]); end; 编译之后,安装TCustOptionsForm.dpk包后,在组件面板上找不到mysetform页。 而且我点击Options 选项,查看TCustOptionsForm.dpk包的components属性,其列表框为空,请问这是为什么? < >< >
1.請注意編譯是否誤(有誤當然無法安裝) 2.安裝有何訊息(提示:先前安裝到MyForm 現在改安裝到MySETFORM ,那麼之前的DPK是否有先移除)
zzmbeyond01
中階會員


發表:98
回覆:167
積分:53
註冊:2003-09-07

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-02-08 18:00:38 IP:218.70.xxx.xxx 未訂閱
谢谢! 但是我编译包时,倒是没有报错。 我想是不是在组件页MySETFORM上出了问题。 因为我添加MySETFORM属性页后,在组件面板上看不到MySETFORM属性页。 在我填加包后,组件面板上也看不到MySETFORM属性页。
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-02-08 18:23:51 IP:203.204.xxx.xxx 未訂閱
建議你先移除乾淨後再一步一步重新來過 另在你測試的過程中,是否有更改過dpk的檔名? 若有且舊的曾安裝成功過,那麼你須選功能表[component]->[Install Packages]找到舊的bpl 然後選[Remove],再到..\delphiX\Projects\bpl\目錄下把舊的bpl刪除,以免干擾。
zzmbeyond01
中階會員


發表:98
回覆:167
積分:53
註冊:2003-09-07

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-02-09 11:53:37 IP:219.153.xxx.xxx 未訂閱
非常感谢您的帮助,谢谢!! 我想再问一下,是不是在组件面板上选择右键的属性add->新组件页名称-> MySETFORM后,在组件面板上看不到MySETFORM属性页。 而且在右键的TAB键中的属性页列表中也无法显示吗?
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-02-09 16:46:32 IP:211.20.xxx.xxx 未訂閱
引言: 非常感谢您的帮助,谢谢!! 我想再问一下,是不是在组件面板上选择右键的属性add->新组件页名称-> MySETFORM后,在组件面板上看不到MySETFORM属性页。 而且在右键的TAB键中的属性页列表中也无法显示吗?
以上的操作是針對(已安裝元件)的重新排列組合, 所以在此新增的組件頁,需要拉至少一個元件(已安裝)進來,才會在組件面板上看見 Package的Install 是會依程式碼中的 registercomponents('MySetForm',[TCustOptionsForm]); 自動新增MySetForm組件頁(若已存在則不新增了),然後把TCustOptionsForm元件放進去
系統時間:2024-11-22 15:54:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!