标签: delphi-7

在操作管理器中使用'case'代替'If else'for Actions

我正在使用动作管理器处理具有大量动作(超过50个)的delph 7应用程序.并跟踪我有的每一个动作..现在我还有其他如下代码..

 procedure TMainForm.OnActionExecute(Sender: TObject);
    var
          Action : TBasicAction;
    begin
            Action := Sender as TBasicAction;
            if (Action is TAction) and not TAction(Action).Enabled then    exit;
           if Action = SQLQueryAction then
           begin
          //do somthing
           end
        else if (Action = NewSurveyAction) then
          begin
          //do somthing
          end
        else if ... 
         ..
         ..
        //lots of actions with if else latr..


    end;// of OnActionExecute....
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我

  1. 如何使用'案例'之类的

       case actions of 
             SQLQueryAction    : //do somthing;
             newsurveyaction   : //do somthing;
    
            //lots …
    Run Code Online (Sandbox Code Playgroud)

delphi if-statement case delphi-7

0
推荐指数
1
解决办法
696
查看次数

如何在字段中使用相同数据遍历表格?

您好我今天运行此代码,但问题是当字段上有相同的数据时它不会循环但只显示它过滤的第一个数据.这是代码

ADOTable1.First;
if ADOTable1.Locate('Last', Edit1.Text, []) then
begin
  Label1.Caption := ADOTable1.FieldByName('Last').AsString;
  Label2.Caption := ADOTable1.FieldByName('First').AsString;
  Label3.Caption := ADOTable1.FieldByName('address').AsString;
  Next;
end 
else
begin
  Label1.Caption := '';
  Label2.Caption := '';
  Label3.Caption := '';
end;
Run Code Online (Sandbox Code Playgroud)

delphi delphi-7

0
推荐指数
1
解决办法
3041
查看次数

适用于Delphi 7的PngComponents

D7 需要这个PngComponents包.我只需要TPngImageList.如果我尝试在D7中编译此包(pas文件),我会收到很多错误:

unknown compiler directive {$Pointermath}
invalid operation for "PByte(ptr1) - PByte(ptr2)"
unknown feature "class var"
unknown ft "class function"
etc
Run Code Online (Sandbox Code Playgroud)

D7是否有一些现成的包装?或者只有在SpTBX中使用的TPngImageList?

delphi delphi-7

0
推荐指数
1
解决办法
1559
查看次数

Delphi 7中有一个TCustomStyleServices?

为了覆盖TPanel的Paint程序在delphi 7中使背景颜色变为clwhite,我正在关注@RRUZ答案,但我找不到TCustomStyleServices类.

还有其他方法可以做我想要的吗?

我正在使用XPMan资源(IDK如果改变了什么).

delphi components delphi-7 vcl-styles

0
推荐指数
1
解决办法
309
查看次数

从搜索中排除文件夹和文件

我投降,我花了我的时间差不多12小时得到我想要的,但我不能.

此代码搜索所有文件夹和文件名,但我想排除一些文件夹,包括我要从搜索中排除的文件夹的子目录.

我希望有人可以提供帮助.

procedure TForm1.CombineDir(InDir : string; OutStream : TStream);
var  AE : TArchiveEntry;
     dFound:boolean;

  procedure RecurseDirectory(ADir : string);
  var  sr : TSearchRec;
       TmpStream : TStream;
  begin
    if FindFirst(ADir + '*', faAnyFile, sr) = 0 then begin
      repeat
        if (sr.Attr and (faDirectory or faVolumeID)) = 0 then begin
          //ShowMessage('Filename is :>'+ ADir + sr.Name);
          if (NotThisPath.IndexOf(ADir + sr.Name)>=0) or dFound then begin
            ShowMessage('DO NOT INCLUDE THIS FILENAME :>'+ ADir + sr.Name);
          end else begin
            ShowMessage('>>> INCLUDE THIS FILENAME :>'+ ADir …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-7

0
推荐指数
1
解决办法
1148
查看次数

如何告诉非模态失去/重新获得焦点

我有一个主窗体和一个辅助窗体,它们都有一个来自公共数据库的DBAware控件.目前我正在使用ShowModal,但我希望能够使用Modal返回主窗体并导航数据库.

在辅助中,我可以用TEdits替换TDBEdits,并在显示辅助表单时用数据填充它们.没有办法在辅助表单中导航数据库,但是,如果用户可以返回到可以导航的主表单,我将需要在返回辅助表单时重置数据库游标.

我如何判断二级表格刚刚失去焦点?我可以抓住数据库光标位置.

如何判断辅助表单何时再次获得焦点?因此,如果数据库游标在返回之前被移动,我可以重置它.

谢谢ps请不要质疑为什么和/或替代建议.这是一个现有的应用程序,我真的不想要修复数英里的代码.虽然它很糟糕,它已经工作多年,客户希望改变可能.:)

delphi delphi-7 lost-focus

0
推荐指数
1
解决办法
2650
查看次数

在运行时创建TRadioGroup

我需要使用7个不同的RadioButtons动态创建一个TRadioGroup.

RadioButtons如下:

Screws 12mm

Canned Peaches 250g

Refil Blue Pen

Tomatoes

Spaghetti

Twin Flex 5m

Clear glue 250ml

这是我认为它必须看起来的样子:

rgpOptions := TRadioGroup.Create(frmSale);
  rgpOptions.Parent := frmSale;
  rgpOptions.Left := 30;
  rgpOptions.Top := 100;
  rgpOptions.Width := 300;
  rgpOptions.Height := 140;
  rgpOptions.Visible := True;
  rgpOptions.Items.Add := (
                          1 := 'Screws 12mm';
                          2 := 'Canned Peaches 250g';
                          3 := 'Refil Blue Pen';
                          4 := 'Tomatoes';
                          5 := 'Spaghetti';
                          6 := 'Twin Flex 5mm';
                          7 := 'Clear Glue';
                          );
Run Code Online (Sandbox Code Playgroud)

(顺便说一句,我知道它不能编译,这就是我要问的原因)

delphi delphi-7

0
推荐指数
1
解决办法
762
查看次数

Delphi 7带小数的两个数字的和

初学者:)

我正在尝试创建一个需要用户输入的Delphi应用程序,然后添加和减去这些变量.

我成功创建了应用程序,一切正常,除了:

无法找到处理带小数的数字的正确方法.

例:

A,B,C,D,E,F:字符串; A1,B1,C1,D1,E1,F1:整数:

我使用InputBox来获取用户输入.我将输入存储在字符串变量中.我将字符串变量转换为整数,A1:= strToint(A); 最后,我想:A1 + B1-C1-D1-E1-F1如果输入是整数,则一切正常.如果用户输入带小数的数字,则会出现问题.

我搜遍了所有地方,但找不到我的问题的答案.(或者我不明白)

任何人都可以指出我正确的方向?

谢谢.

delphi delphi-7

0
推荐指数
1
解决办法
1182
查看次数

错误:没有'IntToStr'的重载版本

编译以下代码时:

procedure TMainWin.FormActivate(Sender: TObject);
  var LineRaw : String;
  LinesFile : TextFile;
  i, i2 : integer;
  tempChar : String;
  CurTempCharPos : integer;
begin
  AssignFile(LinesFile, 'Lines.txt');
  Reset(LinesFile);
  i := 0;
  tempChar := '';
  CurTempCharPos := 1;

  while not EoF(LinesFile) do begin
    i := i+1; //ticker
    ReadLn(LinesFile, LineRaw);
    for i2 := 0 to 4 do begin
      tempChar := LineRaw[CurTempCharPos] + LineRaw[CurTempCharPos +1];
      Lines[i,i2] := IntToStr(tempChar);
      tempChar := '';
      CurTempCharPos := CurTempCharPos + 3;
    end;

  end;

  CloseFile(LinesFile);
end;
Run Code Online (Sandbox Code Playgroud)

使用另一种形式定义行:

unit uGlobal;

interface

  type
    aLines …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-7

0
推荐指数
1
解决办法
2718
查看次数

总下载代码的结果不正确

我使用以下代码显示总下载和上传.累积下载超过2 GB时出现问题,结果是位数:

var
  Form1: TForm1;
  Downloaded, Uploaded:integer;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if Downloaded < 1024 then
  Recv.Caption           := FormatFloat(' + Recv: #,0 Bit',Downloaded)
  else if (Downloaded > 1024) and (Downloaded < 1048576) then
  Recv.Caption           := FormatFloat(' + Recv: #,##0.00 Kb',Downloaded/1024)
  else if (Downloaded > 1048576) and (Downloaded < 1073741824) then
  Recv.Caption           := FormatFloat(' + Recv: #,##0.00 Mb',Downloaded/1048576)
  else if (Downloaded > 1073741824) then
  Recv.Caption           := FormatFloat(' + Recv: #,##0.00 Gb', Downloaded/1073741824);

  if Uploaded < 1024 then
  Sent.Caption …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-7

0
推荐指数
1
解决办法
225
查看次数

标签 统计

delphi ×10

delphi-7 ×10

case ×1

components ×1

if-statement ×1

lost-focus ×1

vcl-styles ×1