首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

修改VCL源码的有关问题

2012-02-07 
修改VCL源码的问题我修改的是Dialogs.pas这个,为什么修改原来的InputQuery函数,加入工程后可以用。(就是看

修改VCL源码的问题
我修改的是Dialogs.pas这个,为什么修改原来的InputQuery函数,加入工程后可以用。(就是看了妖哥的那篇文章http://www.ccrun.com/article.asp?i=598&d=78208k)

但是我重载了原来的InputQuery,主要就是添加了两个形参(一个用来设置密码样式,一个用来设置字体),为什么调用不了,提示Undefined Symbol。

Delphi(Pascal) code
声明:function InputQuery(const ACaption, APrompt: string;  var Value: string): Boolean; overload;//原来的function InputQuery(const ACaption, APrompt: string;  var Value: string; Psw: Boolean; F: TFont): Boolean; overload;//重载的实现:{ Input dialog }function InputQuery(const ACaption, APrompt: string;  var Value: string): Boolean; overload;var  Form: TForm;  Prompt: TLabel;  Edit: TEdit;  DialogUnits: TPoint;  ButtonTop, ButtonWidth, ButtonHeight: Integer;begin  Result := False;  Form := TForm.Create(Application);  with Form do    try      Canvas.Font := Font;      DialogUnits := GetAveCharSize(Canvas);      BorderStyle := bsDialog;      Caption := ACaption;      ClientWidth := MulDiv(180, DialogUnits.X, 4);      Position := poScreenCenter;      Prompt := TLabel.Create(Form);      with Prompt do      begin        Parent := Form;        Caption := APrompt;        Left := MulDiv(8, DialogUnits.X, 4);        Top := MulDiv(8, DialogUnits.Y, 8);        Constraints.MaxWidth := MulDiv(164, DialogUnits.X, 4);        WordWrap := True;      end;      Edit := TEdit.Create(Form);      with Edit do      begin        Parent := Form;        Left := Prompt.Left;        Top := Prompt.Top + Prompt.Height + 5;        Width := MulDiv(164, DialogUnits.X, 4);        MaxLength := 255;        Text := Value;        SelectAll;      end;      ButtonTop := Edit.Top + Edit.Height + 15;      ButtonWidth := MulDiv(50, DialogUnits.X, 4);      ButtonHeight := MulDiv(14, DialogUnits.Y, 8);      with TButton.Create(Form) do      begin        Parent := Form;        Caption := '确定';        ModalResult := mrOk;        Default := True;        SetBounds(MulDiv(38, DialogUnits.X, 4), ButtonTop, ButtonWidth,          ButtonHeight);      end;      with TButton.Create(Form) do      begin        Parent := Form;        Caption := '取消';        ModalResult := mrCancel;        Cancel := True;        SetBounds(MulDiv(92, DialogUnits.X, 4), Edit.Top + Edit.Height + 15,          ButtonWidth, ButtonHeight);        Form.ClientHeight := Top + Height + 13;                end;      if ShowModal = mrOk then      begin        Value := Edit.Text;        Result := True;      end;    finally      Form.Free;    end;end;function InputQuery(const ACaption, APrompt: string;  var Value: string; Psw: Boolean; F: TFont): Boolean; overload;var  Form: TForm;  Prompt: TLabel;  Edit: TEdit;  DialogUnits: TPoint;  ButtonTop, ButtonWidth, ButtonHeight: Integer;begin  Result := False;  Form := TForm.Create(Application);  with Form do    try      Font := F;     //设置字体      Canvas.Font := Font;      DialogUnits := GetAveCharSize(Canvas);      BorderStyle := bsDialog;      Caption := ACaption;      ClientWidth := MulDiv(180, DialogUnits.X, 4);      Position := poScreenCenter;      Prompt := TLabel.Create(Form);      with Prompt do      begin        Parent := Form;        Caption := APrompt;        Left := MulDiv(8, DialogUnits.X, 4);        Top := MulDiv(8, DialogUnits.Y, 8);        Constraints.MaxWidth := MulDiv(164, DialogUnits.X, 4);        WordWrap := True;      end;      Edit := TEdit.Create(Form);      with Edit do      begin        Parent := Form;        Left := Prompt.Left;        Top := Prompt.Top + Prompt.Height + 5;        Width := MulDiv(164, DialogUnits.X, 4);        MaxLength := 255;        Text := Value;        if Psw = True then     //如果真          PasswordChar := '*';     // 则将输入框变成星号样式的        SelectAll;      end;      ButtonTop := Edit.Top + Edit.Height + 15;      ButtonWidth := MulDiv(50, DialogUnits.X, 4);      ButtonHeight := MulDiv(14, DialogUnits.Y, 8);      with TButton.Create(Form) do      begin        Parent := Form;        Caption := '确定';        ModalResult := mrOk;        Default := True;        SetBounds(MulDiv(38, DialogUnits.X, 4), ButtonTop, ButtonWidth,          ButtonHeight);      end;      with TButton.Create(Form) do      begin        Parent := Form;        Caption := '取消';        ModalResult := mrCancel;        Cancel := True;        SetBounds(MulDiv(92, DialogUnits.X, 4), Edit.Top + Edit.Height + 15,          ButtonWidth, ButtonHeight);        Form.ClientHeight := Top + Height + 13;                end;      if ShowModal = mrOk then      begin        Value := Edit.Text;        Result := True;      end;    finally      Form.Free;    end;end; 



[解决办法]
提示的好像是系统没有定义呀,你的#include <Dialogs.hpp>这个改成#include "Dialogs.hpp"了么?改一下试试
[解决办法]
探讨
妖哥也不知道吗?

热点排行