首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TImage在运行时向TTabSheet添加附加映像时不显示

TImage在运行时向TTabSheet添加附加映像时不显示
EN

Stack Overflow用户
提问于 2020-02-09 22:48:25
回答 1查看 35关注 0票数 0

我有一个桌面程序,它的模态来自(FirearmForm),它有一个带有5TTabSheetTPageControl

在TabSheet 3上,我绘制存储在数据库( Server)中的bmp文件。下面的代码在表表的OnShow事件中执行。它完美地描绘了所有的图像。

有一个按钮来添加一个新的记录与新的图片。我点击按钮,得到一个模式形式来选择一个图片,并将它添加到数据库中没有任何问题。我会自动关闭那个模态表。然后,我为包含图像的Refresh方法调用TabSheet方法。

运行在调试模式下,我看到它使用所示的代码来重建图像,包括刚刚上传的新映像。但是..。TabSheet继续只显示的原始图像,就像第一次“显示”TabSheet时一样。如果我单击另一个TabSheet,然后单击包含图像的工作表,代码将再次执行,但新图像不会显示(原件仍然显示)。如果我第二次单击另一个选项卡,然后单击“图像”选项卡,则将正确显示新图像(以及所有其他图像)。

我做错了什么?有什么想法吗?为什么我必须在代码按要求运行之前,先运行两次?

我尝试过几种不同的构建TImage的方法,结果总是一样的。比我聪明的人有什么想法吗?

PS ..。我已经尝试了Create方法的TImage作为(自我)和一个表单名.同样的效果。

代码语言:javascript
复制
procedure TFirearmForm.tsInPicturesShow(Sender: TObject);
var
  wkFileName, wkAName : string;
  wkPic : tPicture;
  wkJPG : tJPEGImage;
  wkBMP : tBitMap;
  wkImg : tImage;
  I, x, wkTop, wkLeft : integer;
  wkComp : tComponent;

begin

  with dm.qryDocuments do begin
    close;
    sql.Text := 'select d.*, di.DocumentBitMap from documents d ' +
      'join DocumentImages di on ' +
        'di.CompanyId=d.CompanyId and ' +
        'di.DocumentId=d.DocumentId ' +
      'where ' +
      'd.companyid=' + quotedstr(dm.gCompanyId) + ' and ' +
      'd.adnumber='  + quotedstr(dm.gADNumber);
    open;

    I := 0;
    wkTop := 32;
    wkLeft := 46;

    while not eof do begin
      inc(i);
      wkAName := 'InImage' + fieldbyname('DocumentId').AsString;

      wkComp := FirearmForm.pcFirearm.findcomponent(wkAName);
      if assigned(wkComp) then begin
        next;
        continue;
      end;

      wkImg := TImage.Create(FirearmForm.pcFirearm);

      wkImg.Parent  := tsInPictures;
      wkImg.Left    := wkLeft;
      wkImg.Top     := wkTop;
      wkImg.Name    := wkAName;
      wkImg.Picture.assign(fieldbyname('DocumentBitMap') as tBlobField);
      wkImg.Visible := True;

      wkLeft := wkLeft + 184;
      if i > 2 then begin
        if i mod 6 = 0 then begin
          wkTop := wkTop + 180;
          wkLeft := 46;
        end;
      end;

      next;
    end;
  end;

//  FirearmForm.pcFirearm.ActivePageIndex :=2;

end;
EN

回答 1

Stack Overflow用户

发布于 2020-02-10 01:56:25

@雷米。该记录确实在数据库中。我已经编程35年了,并且知道如何向DB提交rec。我不明白你的第二个评论。当我使用“自我”指针时,它仍然表现出相同的行为.点击两下,它就会显示“ok”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60142074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档