分值不够,我在开帖子加分!
///////////////////////////////////////////////////////////////////////////
1.怎样使edit控件从右开始写字。2.怎样使窗口最大化显示,但不占据shell_wnd的地方。3.在一个窗体的实现文件中,为什么自己写一个过程(不是窗体的成员函数),用到此窗体的得控件,还得在控件的名字前面加上窗体的名字?如:edit1.Text := 'dd' (error) 而 frmMain.edit1.Text := 'dd' (right)?4. 在函数调用时,怎样传一个数组?5. 我在一个单元文件中定义了一个类,怎么在另一个单元文件中声明此个类的实例?6. 我想在我的程序中,定义对数据库进行访问的控件的实例如下:
var
  dtblYh : TTable;
  dsYh : TDataSource;
  qryYh : TQuery;
然后用程序设置它们的属性,作用为在一个表中查找指定的记录,如下:
// 设置datasource,query控件
  dtblYh.Create(dm);
  dtblYh.DatabaseName := 'hymis';
  dtblYh.TableName := 'yhb';  dsYh.Create(dm);
  dsYh.DataSet := dtblYh;  qryYh.Create(dm);
  qryYh.DataSource := dsYh;
  qryYh.SQL.Clear;
  qryYh.SQL.Add('select * from yhb where yhb.yhxm = :praXm and yhb.yhmm = :praMm');
  qryYh.ParamByName('praXm').AsString := strName;
  qryYh.ParamByName('praMm').AsString := strPw;
  qryYh.Prepare;
  qryYh.Open;// 编译时,出现警告:
Build
  [Warning] uSecModule.pas(48): Variable 'qryYh' might not have been initialized
  [Warning] uSecModule.pas(41): Variable 'dtblYh' might not have been initialized
  [Warning] uSecModule.pas(45): Variable 'dsYh' might not have been initialized
// 为什么?如何解决?
// 另外一个问题:此种方法与直接拖拽控件到界面上,然后设置属性的方法,有什么区别?两者的执行效率如何?7. 在界面上放置许多的datasource控件,table(DBTables)控件,query(DBTables)控件是否会使程序的运行速度变慢?与在程序中定义这些控件的类的实例,然后设置属性并进行数据库操作的方法比起来,两者有什么区别?以及各自的优缺点?8.delphi中函数调用时,参数的传递方法是否有类似c++的引用传递?格式是什么?另外,指针传递参数方式的格式是什么?9.delphi中,结构的赋值是否也c++的一样,使每个成员变量的赋值?10.我的delphi运行一段时间后,在运行开发的程序时,显示异常:
insufficient memory,怎么解决?11.怎样在主窗体显示前,显示登录窗体,如果登录失败或者用户点击了退出按钮则不显示主窗体,直接结束程序运行?
我的方法如下:
/* 在主程序中 */
/////////////////////////////////////////////////////////////////////////
// 创建主窗体
  Application.CreateForm(TfrmMain, frmMain);  Application.Run;
/////////////////////////////////////////////////////////////////////////
// 在主窗体的窗体创建事件中,显示登录窗体
procedure TfrmMain.FormCreate(Sender: TObject);
begin
  Application.CreateForm(TfrmEnter, frmEnter);
   uEnter.frmEnter.Show;
end;
/////////////////////////////////////////////////////////////////////////
//在登录窗体中
//退出按钮单击事件中:
procedure TfrmEnter.btnExitClick(Sender: TObject);
begin
  // PostQuitMessage
  Application.Terminate;
end;
///////////////////////////////////////////////////////////////////////
//登陆成功后
procedure TfrmEnter.btnOkClick(Sender: TObject);
begin
...
...
... 
// 以上检查登录是否成功的程序省略了self.Release; // 销毁登录窗口
uMain.frmMain.Show; // 显示主窗口/////////////////////////////////////////////////////////////////////////
这样做可以实现,但不知是否是正确的方法?
12. 我怎么在delphi7.0中找不到报表控件了?谢谢大家,每道题20分,急盼大家指教!
小弟刚刚学习delphi半个月,以前一直用vc,最近帮同学做二学位毕业设计,所以使用delphi,因此,对delphi还不是很熟悉,希望大家帮帮忙啊!

解决方案 »

  1.   

    由于时间关系我先只回答12题
    12. 我怎么在delphi7.0中找不到报表控件了?
    答:Delphi7的报表控件需要重新自己安装,具体操作:
    在“Component” 中 “Install Packages” 后,“Add”在系统中找安装包,
    包的名字是:dclqrt70.bpl,位置在Delphi安装目录里面的“Bin”文件夹下面。
      

  2.   

    10.我的delphi运行一段时间后,在运行开发的程序时,显示异常:
    insufficient memory,怎么解决?
    答:具体情况不清楚,但是注意每个窗体关闭后在 Onclose事件里面要加上内存释放语句,
    action:=cafree;
    不然内存一直不断得被占用直到你说的那样错误。2.怎样使窗口最大化显示,但不占据shell_wnd的地方。
    答:直接在窗体的 WindowStatus属性的直给 wsMaximized即可
      

  3.   

    5. 我在一个单元文件中定义了一个类,怎么在另一个单元文件中声明此个类的实例?
    下面是自己定义的类:
    unit Communication;interfaceuses ScktComp,Messages,Dialogs,forms,Windows,sysutils,allrecord;type TSocketStatus=(Sbusy,Sconnect,Sdisconnect);const timeout=20000;type
      Tsendbuffer=array[0..1023] of byte;  TCommunication= class(TClientSocket)
      private
        loginflag : byte;
        gettableflag:byte;
        Sstatus : TSocketStatus;
        FLasterror: string;
      protected
        procedure Setstatus(const Value: TSocketStatus);
        procedure SetLasterror(const Value: string);
      public
        constructor create;
        destructor  destroy;
        property Lasterror:string read FLasterror write SetLasterror;
        property status:TSocketStatus read Sstatus write Setstatus;
        function connect:boolean;
        procedure OnMyconncet(Sender: TObject; Socket: TCustomWinSocket);
        procedure OnMydisconncet(Sender: TObject; Socket: TCustomWinSocket);
        procedure OnMyerror(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer);
        procedure OnMyRead(Sender: TObject; Socket: TCustomWinSocket);
        function checklogin (logininfo : TLogininfo) : Byte;
        function gettable (tablename : string) : Byte;
    end;
    下面是声明实例:
    procedure TForm1.Button1Click(Sender: TObject);
    var
       myCommunication : TCommunication;
    begin
       myCommunication := TCommunication.create;
       if not myCommunication.connect then
       begin
         frmfendianmanage.StatusBar1.SimpleText := 'Á¬½Ó·þÎñÆ÷ʧ°Ü!';
         Exit;
       end
    end;
      

  4.   

    4. 在函数调用时,怎样传一个数组?
    定义:
    function test(buffer : array of char): Boolean;function TForm1.test(buffer: array of char): Boolean;
    begin
      ShowMessage(buffer);
    end;
    调用:
    procedure TForm1.Button2Click(Sender: TObject);
    var
      buffer : array[0..4] of char;
      str : string;
    begin
      FillChar(buffer,sizeof(buffer),'0');
      str := '12345';
      StrPCopy(buffer,str);
      test(buffer);
    end;
      

  5.   

    9.delphi中,结构的赋值是否也c++的一样,使每个成员变量的赋值?
    定义一个结构:
    type
      Tlogininfo=record
      chainnum : Int64;
      sourcesubshopnum : Smallint;
      destsubshopnum : Smallint;
      sourcesubshopip : String;
    end;
    给结构赋值:
          logininfo.chainnum:= FieldByName('zdno').AsInteger;
          logininfo.sourcesubshopnum := FieldByName('wangbano').AsInteger;
          logininfo.sourcesubshopip := FieldByName('zongdianIP').AsString;
      

  6.   

    1.怎样使edit控件从右开始写字。
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      Edit1.SelStart:=length(Edit1.Text);
    end;
      

  7.   

    1.怎样使edit控件从右开始写字。
    把要写的string反转这个你不会不会把,在写到EDIT中然后让EDIT以右堆齐!
      

  8.   

    1.怎样使edit控件从右开始写字
    右对其
      

  9.   

    DELPHI7中的报表控件用RAVE代替了原来的QUICKREPORT
    不过我建议用FASTREPORT,我们一起交流啊
      

  10.   

    edit控件如果为数字为右对齐,字符为左对齐
      

  11.   

    1.怎样使edit控件从右开始写字。
    修改一下TEdit类的属性,重新编译一下。不过要小心使用。
    8.delphi中函数调用时,参数的传递方法是否有类似c++的引用传递?格式是什么?另外,指针传递参数方式的格式是什么?
    参数传递没啥区别,指针用^或者@也可以的。
      

  12.   

    3.在一个窗体的实现文件中,为什么自己写一个过程(不是窗体的成员函数),用到此窗体的得控件,还得在控件的名字前面加上窗体的名字?如:edit1.Text := 'dd' (error) 而 frmMain.edit1.Text := 'dd' (right)?因为edit1是窗体类的一个成员,当然不能在非类成员函数中直接访问了。
    注意整个窗体也是一个类