小编Thi*_*Guy的帖子

应用程序需要很长时间来同步线程(或根本没有)

我在Delphi XE5(iOS和Android)中使用REST组件.我目前正在通过iOS模拟器进行测试,我的应用程序经常挂在我的代码中的以下行:

R_Request.Execute;
Run Code Online (Sandbox Code Playgroud)

经过一些调试后,我发现它专门挂在REST.Client.PAS中的这行代码中:

HandleEvent(DoAfterExecute);
Run Code Online (Sandbox Code Playgroud)

看起来像:

procedure TCustomRESTRequest.HandleEvent(AEventHandler: TMethod);
begin
  // Handle Synchronized if we are NOT already in the main thread
  // NEVER call synchronize on the MainThread - that might shift the island!
  if SynchronizedEvents and (System.MainThreadID <> TThread.CurrentThread.ThreadID) then
    TThread.Synchronize(TThread.CurrentThread, AEventHandler) // FAILS HERE
  else
    AEventHandler;
end;
Run Code Online (Sandbox Code Playgroud)

它要么不在.Synchronize中返回线程,要么花费很长时间(大约5分钟)...它在调试时工作了一次,但是从现在开始一直没有(30分钟后,在设置之后) 5分钟返回一个帖子).

救命 ?或者至少任何人都可以给我的方向感?

再次,开发iOS和Android(所以FMX ...),目前正在通过iOS模拟器进行测试.谢谢 !

delphi multithreading delphi-xe5

16
推荐指数
1
解决办法
1118
查看次数

无法删除Delphi xe7中的控件

刚刚安装了Delphi xe7.打开了一个用XE7开发的项目.旁注,但我首先担心的是,所有内容都会导致IDE挂起,无论是将"视图"从Master更改为iPhone4,还是只是在"设计视图"中拖动控件.我之前有一个工具单元,它具有接受TComboEdit参数的功能.似乎他们再次移动了一些东西,因为这个功能现在已被打破.为了快速找出哪个单元主持组合编辑,我打开了一个表单并放下了一个Combo编辑并保存.很酷,现在我知道有一个FMX.ComboEdit单元.我尝试删除组合编辑,这是我得到的:Selection contains a component, ComboEdit1, introduced in an ancestor and can not be deleted.

对于我在表单上删除的任何新控件也是如此,例如甚至是TEdits.无法删除任何内容.快速谷歌搜索引用TGrids和列...在我的表单上,只有Layouts和一个TabControl,其中新的位置控件在TabItem中.好吧,也许TabItems存在类似的错误,所以我尝试移动控件,使表单成为父级.但是,IDE会挂起大约30秒并且不会执行任何操作.

如何在Delphi xe7中删除这些控件?

delphi firemonkey delphi-xe7

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

如何将事件作为函数参数传递?

我有一个表单,其中包含我创建的有用过程列表,我经常在每个项目中使用.我正在添加一个过程,可以很容易地将可点击图像添加到TListBoxItem的TAccessory上.该过程目前正在进入ListBox,但我还需要它来为图像调用OnClick事件的过程.这是我现有的代码:

function ListBoxAddClick(ListBox:TListBox{assuming I need to add another parameter here!! but what????}):TListBox;
var
  i       : Integer;
  Box     : TListBox;
  BoxItem : TListBoxItem;
  Click   : TImage;
begin
  i := 0;
  Box := ListBox;
  while i <> Box.Items.Count do begin
    BoxItem := Box.ListItems[0];
    BoxItem.Selectable := False;

    Click := Timage.Create(nil);
    Click.Parent := BoxItem;
    Click.Height := BoxItem.Height;
    Click.Width := 50;
    Click.Align  := TAlignLayout.alRight;
    Click.TouchTargetExpansion.Left := -5;
    Click.TouchTargetExpansion.Bottom := -5;
    Click.TouchTargetExpansion.Right := -5;
    Click.TouchTargetExpansion.Top := -5;
    Click.OnClick := // this is where I need help …
Run Code Online (Sandbox Code Playgroud)

delphi events parameter-passing

6
推荐指数
1
解决办法
1995
查看次数

如何以编程方式在互联网上按下按钮

如何在页面内容中调用按钮单击TWebBrowser?我找到了VCL和旧版Delphi的代码:

WebBrowser.OleObject.Document.GetElementByID('ID HERE').Click;
Run Code Online (Sandbox Code Playgroud)

我正在使用XE5,为Android和iOS开发,所以我不能使用上面的代码.任何帮助或建议将不胜感激.谢谢 !

delphi android ios delphi-xe5

6
推荐指数
1
解决办法
825
查看次数

线程不一致Delphi xe6

因此,在delphi xe4-6中进行线程处理时,我总是面临严重的问题,无论是来自未执行的线程,还是异常处理导致应用程序崩溃,或者只是on terminate方法永远不会被调用.我已被指示使用的所有变通方法变得非常乏味,在XE6中仍然困扰着我的问题.我的代码通常看起来像这样:

procedure TmLoginForm.LoginClick(Sender: TObject);
var
  l:TLoginThread;
begin
  SyncTimer.Enabled:=true;
  l:=TLoginThread.Create(true);
  l.username:=UsernameEdit.Text;
  l.password:=PasswordEdit.Text;
  l.FreeOnTerminate:=true;
  l.Start;
end;



procedure TLoginThread.Execute;
var
  Success     : Boolean;
  Error       : String;
begin
  inherited;
  Success := True;
  if login(USERNAME,PASSWORD) then
  begin
    // do another network call maybe to get dif data.
  end else
  begin
    Success := False;
    Error   := 'Login Failed. Check User/Pass combo.';
  end; 

  Synchronize(
  procedure
    if success = true then
    begin
      DifferentForm.Show;
    end else
    begin
      ShowMessage('Error: '+SLineBreak+Error);
    end;
    SyncTimer.Enabled := False;
  end);
end;
Run Code Online (Sandbox Code Playgroud)

然后我从Delphi和论坛的样本中看到了这个单元:

unit …
Run Code Online (Sandbox Code Playgroud)

delphi multithreading firemonkey delphi-xe6

6
推荐指数
0
解决办法
1445
查看次数

条形码读取Delphi xe7,意图不触发后的事件

在我的应用程序中,使用XE7 for Android/iOS开发,我有一个用于扫描条形码的表单.找到条形码后,我的应用程序会验证它是否是可接受的条形码.以下教程:http://www.fmxexpress.com/qr-code-scanner-source-code-for-delphi-xe5-firemonkey-on-android-and-ios/

目前我在Android上进行测试,我能够集成扫描和读取条形码,但是当从共享的查找条形码的Activity返回时,'onBarCode'事件不会触发.相同的代码与以前版本的Rad Studio(XE4,XE5,XE6)运行良好,但现在在XE7中却没有.

以下是一些代码片段:

...
begin
    Scanner := TAndroidBarcodeScanner.Create(true);
    Scanner.OnBarCode := BarcodeHandler;
    Scanner.Scan;
end;

procedure TmScannerForm.BarcodeHandler(Sender: TAndroidBarcodeScanner;
  BarCode: String);
begin
  text1.Text := Barcode;
  memo1.PasteFromClipboard;
  AddBarcode(BarCode, true);
end;
Run Code Online (Sandbox Code Playgroud)

AddBarCode甚至是我用来验证和添加条形码到列表,但我没有包括它,因为该代码不是问题 - 它甚至没有触发.Text1.text:= Barcode和memo1.paseFromClipboard在他们的验证中,偶数也没有解雇.我可以确认正在读取条形码,因为如果我点击并手动粘贴,条形码会显示.

为什么这不像在以前版本的Rad Studio中那样在XE7上运行?

delphi android barcode zxing delphi-xe7

6
推荐指数
1
解决办法
8180
查看次数

使用给定的示例创建特定的自定义 TListBoxItem 以及 fontColor 属性的问题

在此输入图像描述
有人可以指导我正确的方向吗?我正在尝试使用 Delphi XE4 为 iOS 应用程序创建自定义 ListboxItem。我的目标输出将类似于上面的照片,因为我目前被困在这里(下图)。

在此输入图像描述

我已成功动态生成 ListBoxItem 并插入 TLabel 对象,但是,我无法将 TLabel 的“fontColor”属性更改为所需的颜色。我可以编码

TLabel.Fontcolor := ClaBlue;

但颜色又恢复为黑色。我希望它看起来就像我给出的示例一样。我在更改插入的 TLabel 的字体颜色以及向每个列表框项添加渐变背景时遇到问题。我不知道是否需要使用“样式编辑器”,甚至不知道如何使用。是的,我已经查看了 Delphi/RAD Studio 中包含的示例,下面是我当前的编码:

while XMLNode<>nil do begin 

HeaderText := 'Part#: ' + XMLNode.ChildNodes['PARTNUM'].Text + Chr(9) + XMLNode.ChildNodes['VENDPARTNUM'].Text;

DetailText := '$' + XMLNode.ChildNodes['MD1_SELL_PRICE'].Text + ' /' + XMLNode.ChildNodes['UM1_PRICE_NAME'].Text + sLineBreak + 'Min: ' + XMLNode.ChildNodes['md2_from.MD2_MIN_QTY'].text + Chr(9) + 'On Hand: ' + XMLNode.ChildNodes['md2_from.MD2_ON_HAND_QTY'].text + Chr(9) + Label1.text ;
Form6.ListBox1.Items.Add(DetailText); 
ListBoxItem:=Form6.ListBox1.ListItems[Form6.ListBox1.Items.Count-1]; 
ListBoxItem.StyleLookup:='listboxitembottomdetail';
ListBoxItem.WordWrap:=True; 
ListBoxItem.Font.Size:= 8;
ListBoxItem.Height := 120; 
TestLabel := TLabel.Create(self); 
TestLabel.Text …
Run Code Online (Sandbox Code Playgroud)

delphi firemonkey tlistbox delphi-xe4

5
推荐指数
1
解决办法
7459
查看次数

使用幻灯片切换制作表格节目

对于我的应用程序,当显示新表单时,我希望有一个过渡幻灯片,当它们看起来有点类似于 Tab 项在幻灯片过渡中的显示方式 - 好吧,实际上以相同的方式。

我无法找到有关特定问题的任何故障排除或示例。我能想到的唯一解决方法就是为所有三个表单使用选项卡控件并将它们放置在选项卡控件中。

我也尝试过Form.animateFloatWait()通常对表单控件执行的功能,但无济于事。

如何让我的表单在视图中滑动?

forms delphi ios delphi-xe5

5
推荐指数
1
解决办法
6679
查看次数

文本提示Delphi XE7

在我向Embacadero提交质量控制报告之前,我想知道在TEdit和设置'TextPrompt'属性方面是否有一些简单的东西.

每当尝试设置任何TEdit的TextPrompt时,都不会显示提示.我错过了一个步骤,或者是否有一个简单的工作来解决这个当前任何人都知道的错误?

适用于iOS的Delphi XE7(FMX)

delphi firemonkey delphi-xe7

4
推荐指数
1
解决办法
2500
查看次数

在Delphi XE6中iOS7模糊叠加

之前我问过这个问题并删除只是因为1)它似乎比我想做的更多的工作,2)我开始问我的问题很糟糕而且它已经关闭了.但是,经过更多的研究,我决定重新审视这个功能/问题/操作方法

我正在尝试/想要创建一个模糊的叠加层,如下图所示.使用的明显FMX.effect将是"模糊"效果.我的问题是:如何渲染叠加层所覆盖的图像,或者以有效的方式复制图像以模糊叠加层?

我曾想过只使用两个相同的位图,一个用于背景,一个用于模糊但是我不会在原始背景上捕获控件或其他任何东西的"模糊".我也会认为如果我要将叠加层滚动到视图之外,那么它就不会像我想要的那样显示/显示.

考虑到上述情况,这一切都让我相信,当叠加层滚动/进入视图时,我需要动态捕捉背景模糊.如何在Delphi XE6中执行此操作并捕获当前显示的屏幕内容?不确定从哪里开始.

我不拥有图片*

在此输入图像描述

delphi firemonkey delphi-xe5 delphi-xe6

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

使用 Delphi XE7 FMX 运行终端命令

如何通过 Delphi xe6-7 OSX 应用程序运行终端命令?例如,我想运行一个返回 iTunes 播放列表中所有曲目名称的脚本。

我看到 VCL 和 WINDOWS 可以运行 ShellExecute() 函数,但我似乎无法在 FMX 中找到 OSX 的等效函数

delphi delphi-xe6 delphi-xe7

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