小编men*_*raz的帖子

Delphi 7:如何填写Tlistview

我有一个包含3列的Tlistview,我需要来自Tcollection对象,如下所示

FListeDispoProduit := TListeDispoProduit.Create(TProduit);

  with (FListeDispoProduit) do
  begin
    with TProduit(Add) do
    begin
      Name := 'Produit 01';
      CIP := 'A001';
      StockQty := 3;
    end;
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将此对象放入Tlistview时,只有第一列(Name)填充,我写这个:

for i := 0 to FListeDispoProduit.Count -1 do
     Tlistview1.Items.Insert(i).Caption := TProduit(FListeDispoProduit.Items[i]).Name;
Run Code Online (Sandbox Code Playgroud)

我需要填写这3列(Name,cip,StockQty),我该怎么做?

谢谢.

希望我明白.

delphi delphi-7 tlistview

3
推荐指数
1
解决办法
7964
查看次数

Delphi中的自定义控件创建

我习惯于在一个表格上创建它10次,这没关系,直到我试图传递这个数字,它开始吃系统资源,无论如何我可以创建这样的组件?对于模拟器项目,需要8位来指示二进制寄存器的值

替代文字

任何帮助,评论,想法都非常感谢.TY.

delphi delphi-7 custom-component

3
推荐指数
2
解决办法
7904
查看次数

如何在创建FileStream时处理异常

我有这样的功能,我想重构

   function Myfunction(sUrl, sFile: String) : Boolean;
    var
      GetData : TFileStream;
    begin
      Result := False;
      //if the line below fails, I get an unhandled exception
      GetData := TFileStream.Create(sFile, fmOpenWrite or fmCreate);
      try        
        try
          IdHTTP.Get(sUrl, GetData);
          Result := (IdHTTP.ResponseCode = 200);
        except
          on E: Exception do begin
            MessageBox(0, PChar(E.message), 'Niðurhala skrá', MB_ICONERROR or MB_OK);
          end;
        end;
      finally
        GetData.Free;
      end;
    end;

    Procedure SomeOtherCode;
     Begin
        //How can I best defend against the unhandled exception above
        //unless the call to the function is packed …
Run Code Online (Sandbox Code Playgroud)

delphi exception-handling tfilestream

3
推荐指数
1
解决办法
4736
查看次数

Delphi空闲处理程序仅在我移动鼠标时触发

我的D2006应用程序中有一个OnIdle处理程序.使用此代码:

procedure TMainForm.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);

begin
Inc (IdleCalls) ;
Sleep (10) ;
Done := False ;
end ;
Run Code Online (Sandbox Code Playgroud)

应用程序运行平稳,空闲处理程序每​​秒调用100次,CPU使用率接近于零.

然后我添加了一个TActionList并将一些控件连接到操作,编写了一个Execute和Update处理程序.

procedure TMainForm.ActionNewButtonExecute(Sender: TObject);
begin
DoNewProject ;
end ;

procedure TMainForm.ActionNewButtonUpdate(Sender: TObject);
begin
ActionNewButton.Enabled := AccessLevelIsSupervisor ;
end;
Run Code Online (Sandbox Code Playgroud)

问题.OnUpdate事件不会触发.在预感中,我在OnIdle处理程序中设置了Done:= true,然后只有在我移动鼠标时才会调用OnIdle处理程序.并且更新操作仍然不会触发.

为什么更新处理程序可能不会被触发,我应该将Done设置为true还是false?或两者?

delphi event-handling taction delphi-2006 python-idle

3
推荐指数
1
解决办法
2555
查看次数

如何修改TVirtualStringTree中的焦点框颜色?

我需要修改TVirtualStringTree的焦点框的边框颜色,就像这张照片:

从灰色到红色

delphi virtualtreeview tvirtualstringtree

3
推荐指数
1
解决办法
2076
查看次数

Delphi(VCL)泛型和数据绑定?

有没有人知道Delphi XE(我在这里说的是VCL)是否有任何使用数据感知控件的通用集合类?换句话说,是否有任何通用类,如TObjectList <>可以分配给TDataSource.DataSet,或类似的东西?

谢谢.

delphi generics binding data-aware

3
推荐指数
1
解决办法
2029
查看次数

用户GUI活动如何破坏我的串口输入

我正在使用来自"大牌"之一的第三方串口组件(是的,我已经向他们寻求支持,但是存在时区差异,我需要很快解决这个问题).该组件已存在多年,我没有理由相信问题在于它(同上硬件).

h/w规范说如果我将一个字符串写入seial端口,通过回车终止,然后读取,它将回复一个spcifically格式的8字符串,再次通过回车终止.

代码可以正常运行几个小时,并根据它读取的内容更新GUI.

但是,当GUI上有任何用户活动时,我会从串口读取垃圾.

我第一次注意到它是单击一个按钮,导致打开模态窗体然后关闭窗体.

但是,我只是在拖动TStringGrid的scollbar时也会看到它.

这是代码.有什么建议?


更新:组件是线程化的,供应商同意这里的海报 - 串口是异步设备.我已经更改了代码来编写数据请求并处理组件的OnCharReceived()事件处理程序中的每个已接收字符.Tahnsk提供所有帮助.


function TForm1.ReadChannelValueFromSerialPort(
                       device_number : String; channel_number : String) : Real;
   const SLEEP_TIME = 50;         // ms
         NUM_READ_ATTEMPTS = 10;

   var serialPortInput : String;
       read_attempt_counter : Integer;
       messageString : String;
begin
   WriteToSerialPort('#' +  device_number + channel_number + #13);

   serialPortInput := '';
   read_attempt_counter := 0;

   while Length(serialPortInput) = 0 do
   begin
      try
         Application.ProcessMessages();
         serialPortInput := serialPortInput + SerialPort.ReadText();

      except
         on E: Exception do
         begin
            messageString := 'Can''t read from serial port' ; …
Run Code Online (Sandbox Code Playgroud)

delphi user-interface serial-port corrupt-data android-activity

3
推荐指数
1
解决办法
294
查看次数

为什么Qt Creator的核心是一个插件?

您是否清楚地解释了为什么他们选择应用程序的核心作为其他组件的插件,而不仅仅是基本的共享库?除了设计的"酷感"之外,我看不出任何明显的优势.

architecture plugins qt qt-creator

3
推荐指数
2
解决办法
624
查看次数

如何在delphi单元中管理循环引用?

我在AfterSignup单元中使用BeforSignup,以便能够从AfterSignup代码中调用电子邮件变量,最后我知道了一个问题,因为我想创建一个按钮,使用代码打开AfterSignup窗口:

 AfterSignup.Show;
Run Code Online (Sandbox Code Playgroud)

但问题是我有义务将AfterSignup单元添加到BeforeSignup的使用列表中,这正是我无法做到的,因为我很喜欢使用BeforeSignup到AfterSignup单元.

我收到一个错误说,圆形单位的参考.

delphi circular-reference delphi-2010

3
推荐指数
1
解决办法
4426
查看次数

TEdit onclick选择全部?

如何在用户单击时选择TEdit1的所有文本或单击以选择其中的某些文本

delphi onclick textselection delphi-2010

3
推荐指数
2
解决办法
1万
查看次数