我试过:
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
Shift: TShiftState);
begin
if Key = vkHardwareBack then begin
Key := 0;
Form1.WindowState := TWindowState.wsMinimized; // Also tried Application.MainForm
end;
end;
Run Code Online (Sandbox Code Playgroud)
但是,当您第一次点击时,屏幕会变黑,当您第二次点击时,应用程序将关闭。如何避免这种情况?
当我尝试在Android中使用加速度传感器时,它会导致高CPU使用率 - 即使我尝试通过代码停止传感器并停用它.
我只需要在我的应用程序中读取一次加速度传感器,但看起来FireMonkey没有响应并且无法停止传感器.
这是代码:
var
Sensor: TCustomSensor;
begin
{ attempt to get and activate the sensor manager }
FSensorManager := TSensorManager.Current;
FSensorManager.Activate;
{ attempt to get an orientation sensor }
FSensors := TSensorManager.Current.GetSensorsByCategory(TSensorCategory.Motion);
FSensor := nil;
for Sensor in FSensors do
if TCustomMotionSensor(Sensor).SensorType = TMotionSensorType.Accelerometer3D then
begin
FSensor := TCustomMotionSensor(Sensor);
Break;
end;
if not Assigned(FSensor) then
begin
Exit; { no orientation sensor is available }
end;
{ start the sensor if it is not started }
if not FSensor.Started …Run Code Online (Sandbox Code Playgroud) 这是与Delphi Berlin 10.1 Update 2一起使用的
以下作品(画线):
brush := TStrokeBrush.Create(TBrushKind.Solid, TAlphaColors.Lightgray);
brush.Thickness := 2;
with Canvas do
begin
BeginUpdate;
DrawLine(PointF(10, 10), PointF(100, 10), 1, brush);
EndUpdate;
end;
Run Code Online (Sandbox Code Playgroud)
以下内容不起作用:
with Canvas do
begin
BeginUpdate;
Stroke.Color := TAlphaColors.Black;
Stroke.Thickness := 2.0;
DrawLine(PointF(10, 10), PointF(100, 10), 1);
EndUpdate;
end;
Run Code Online (Sandbox Code Playgroud)
为什么我不能使用第二个?如何使它工作,还是应该像第一个示例一样坚持创建描边画笔?
我提供了一个最小的应用程序:
主目录
unit main;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Objects;
type
TMainForm = class(TForm)
PaintBox: TPaintBox;
procedure OnPaint(Sender: TObject; Canvas: TCanvas);
private
{ Private declarations }
public …Run Code Online (Sandbox Code Playgroud) 我正在从XML文件中的节点读取浮点属性值TXMLDocument:
<MyApp_Favorites version="1.0">
Run Code Online (Sandbox Code Playgroud)
......发表声明:
var
ThisRootNode: IXMLNode;
ThisVersion: Single;
// ...
ThisVersion := ThisRootNode.Attributes['version'];
CodeSite.Send('ThisVersion', ThisVersion);
Run Code Online (Sandbox Code Playgroud)
但是,在我的德语系统上,我得到了这个版本值:
ThisVersion = 10,00
...在我的区域设置中,逗号","被定义为小数分隔符,而不是点"." 就像在XML文件中一样.但是使用英语区域设置 - 其中点最可能被定义为小数分隔符设置 - 结果将正确为"1.0".
那么如何确保独立于区域设置,1.0的读取值将始终相同?(将版本值读取为字符串,然后将其转换为float似乎不是一个非常优雅的方法).
xml delphi txmldocument regional-settings delphi-10.1-berlin
有没有办法用自动执行程序创建对象?例如,如果此对象中的变量已更改,则私有过程启动并开始执行某些操作?
在我的表格上有一个TRadioGroup。在此TRadioGroup,我添加了3个项目。现在我想禁用一个项目在三个的TRadioGroup。
我该怎么做呢?我写代码...
TRadioButton(rgbLoadSurveyTypes.Controls[1]).Enabled := True;
Run Code Online (Sandbox Code Playgroud)
...但它给错误“访问冲突”。出现此错误的原因是
rgbLoadSurveyTypes.Controls[1]赋予null价值并
rgbLoadSurveyTypes展示ControlCount = 0和
Item Count = 3
我想用HTTP POST方法发送位图图像.如何将其发送到URL?
我使用的是Indy 10和Delphi 10.1.在一个过程中,我创建了一个TStringList包含所有参数值,但我不知道如何传递位图数据.
这是我的代码:
procedure TuDm_Athlos.AddComandaInsertLogo(workList: TStringList;
imageStream: TStream);
var
image : TBitmap;
begin
try
image := TBitmap.Create;
imageStream := TStream.Create;
image.LoadFromFile('D:\\COFEE.BMP');
image.SaveToStream(imageStream);
workList.Add('db=titles');
workList.Add('line_1=');
worklist.Add('line_2=');
workList.Add('line_3=');
workList.Add('line_4=');
workList.Add('line_5=');
workList.Add('line_6=');
workList.Add('store=&DB=PRN_UDG');
workList.Add('code=1');
workList.Add('width=' + IntToStr(image.Width));
workList.Add('height=' + IntToStr(image.Height));
workList.Add('length=576');
workList.Add('store=');
finally
FreeAndNil(imageStream);
end;
end;
function TuDm_Athlos.InsertLogo(imageStream: TStream;
isFullResponse: Boolean): Boolean;
var
StrResult : UTF8String;
workList : TStringList;
ContentStream : TStream;
image : TBitmap;
begin
//Setup;
Result := False;
try
try
workList := TStringList.Create;
ContentStream := …Run Code Online (Sandbox Code Playgroud) 我正在考虑在一个对象中添加加载动画和进度弧(比如加载记录时的WhatsApp),所以我认为最好使用TArc和TFloatAnimation,因为我可以控制笔画的StartAngle和EndAngle.我试图让谷歌加载微调器逻辑,但我很困惑,看起来有一个FloatAnimation具有控制其中一个角度的"线性"插值属性,另一个看起来具有指数或正弦插值的开始/结束非常快,我看不到它,有人已经尝试重现它吗?谢谢.
delphi android android-animation delphi-10.1-berlin c++builder-10.1-berlin
在转换过程中,我遇到了以下C代码:
/** Opaque data type for the error object.
*/
typedef struct kError * KErrorRef;
Run Code Online (Sandbox Code Playgroud)
在哪里kError申报?
Rudy Velthuis提供的转换工具生成以下代码:
type
{$EXTERNALSYM KErrorRef}
KErrorRef = ^kError;
Run Code Online (Sandbox Code Playgroud)
当我尝试编译它时,我收到此错误消息:
[dcc32 Error] ukError.pas(50): E2003 Undeclared identifier: 'kError'
Run Code Online (Sandbox Code Playgroud)
转换C代码的适当方法是什么?
我有一个使用Delphi 10.1创建的64位服务器应用程序,在此应用程序中我有一个TIdTCPServer组件。
当客户端连接时,线程数增加,而当客户端断开连接时,线程数没有减少。Windows Server计算机上会发生此问题。我没有处理OnConnect和OnDisconnect事件中的任何代码。下面是我的OnExecute方法:
try
if not AContext.Connection.IOHandler.InputBufferIsEmpty then
begin
AContext.Connection.IOHandler.InputBuffer.ExtractToBytes(ReceivedIDBytes.PointerMessage.tyTIDBytes) ;
ReceivedIDBytes.ClientSocket := AContext.Connection;
MessageProcessorThread.ProcessMessageQueue.Enqueue(ReceivedIDBytes);
IndySleep(50);
end;
IndySleep(5);
except
end;
Run Code Online (Sandbox Code Playgroud)
我应该使用它Application.ProcessMessages()来解决此问题吗?
由于线程数增加,我需要定期重新启动Server应用程序。