在我的Delphi应用程序中,我正在使用一个TWebBrowser控件,我在其中加载了一个HTML文档,其中包含一个<select>元素(下拉列表)和一些<option>项目(下拉列表项).假设我在网络浏览器中加载了以下HTML文档:
<html>
<body>
<select id="ComboBox">
<option value="firstvalue">First Value</option>
<option value="secondvalue">Second Value</option>
<option value="thirdvalue">Third Value</option>
</select>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我怎样才能以编程方式选择,例如<option>,其value属性是thirdvalue?或者换句话说,当我只知道该项的value属性是thirdvalue什么时,我如何以编程方式选择此下拉列表中的第三项?
我有一个应用程序,在Delphi 2007中构建,TDateTimePicker在表单上有一个.此日期时间选择器具有ShowCheckbox设置为的属性True,其在日期或时间旁边显示一个复选框,每当用户选择日期时,或者通过代码更改日期或时间时,该复选框将自动选中.此复选框的状态也可由用户手动控制,其状态可由Checked属性确定.
以下代码显示如何确定OnChange事件中此复选框的状态:
procedure TForm1.FormCreate(Sender: TObject);
begin
DateTimePicker1.ShowCheckbox := True;
end;
procedure TForm1.DateTimePicker1Change(Sender: TObject);
begin
ShowMessage('Checked: ' + BoolToStr(DateTimePicker1.Checked, True));
end;
Run Code Online (Sandbox Code Playgroud)
上面的代码在Windows XP上按预期工作,但在Windows 7上,Checked无论该复选框的实际状态如何,该属性都返回True.
为什么Checked属性返回始终为True,即使取消选中复选框也是如此?有办法以某种方式修复或解决这个问题吗?
PS我的应用程序使用Windows主题
我正在开发一个项目,我必须实现一个简单的Web服务器才能显示欢迎页面.所以我在表单上放置了一个TTCPServer,我可以成功地将纯文本发送到与服务器交互的浏览器.但是我该如何发送HTML?
我尝试了这个但是没有用.
ClientSocket.Sendln('HTTP/1.0 200 OK');
ClientSocket.Sendln('MIME-version: 1.0');
ClientSocket.Sendln('Content-type: text/html');
ClientSocket.Sendln('Content-Length:'+IntToStr(Length(webpage)+10));
ClientSocket.Sendln(AnsiString(Format(webpage, [va, ma, mi, timexx])));
Run Code Online (Sandbox Code Playgroud)
有任何想法吗 ?我还是不想使用其他组件.
我已经用谷歌搜索并检查了许多地方的解决方案,但我发现的所有案例都不同或涉及比简单地添加或删除行更高级的东西。基本上,我想做一种滚动丰富的编辑(另一种方法是将插入符号移到底部,我已经找到了解决方案)。
我正在向它添加行并检查富编辑Lines.Count的OnChange事件,一旦它达到大于 15 我想调用的值Lines.Delete(0),但是我收到错误:
RichEdit line insertion error
Run Code Online (Sandbox Code Playgroud)
有人能告诉我我在这里做错了什么吗?
要使用其ID从TChromium实例获取当前Web文档中嵌入的特定DOM节点,请使用ICefDomDocument.getElementById().但是如何通过NAME属性找到元素?Javascript具有document.getElementsByName()方法,而TWebBrowser(包装IE)也有类似的调用,但我无法弄清楚如何使用TChromium执行此操作.我需要找到一些具有NAME属性但没有ID属性的DOM元素.我搜查了ceflib单位并没有看到任何可以做到的事情.
边题.如果有人链接到TChromium"食谱"风格的网站或文档,我可以使用它.
更新:在等待答案时,我已经提出了以下代码来执行getElementsbyName().我想要比扫描整个DOM树更快的东西.如果您在代码中看到错误,请告诉我:
type
TDynamicCefDomNodeArray = array of ICefDomNode;
// Given a Chromium document interface reference and a NAME attribute to search for,
// return an array of all DOM nodes whose NAME attribute matches the desired.
function getElementsByName(ADocument: ICefDomDocument; theName: string): TDynamicCefDomNodeArray;
// Get all the elements with a particular NAME attribute value and return
// an array of them.
procedure getElementsByName1(intfParentNode: ICefDomNode; theName: string; var aryResults: TDynamicCefDomNodeArray);
var
oldLen: integer;
intfChildNode: ICefDomNode;
theNameAttr: string;
begin
Result …Run Code Online (Sandbox Code Playgroud) 好吧,这让我疯了,哈哈.
我有一个Base64字符串,我正在尝试使用TIdDecoderMIME将其解码为TMemoryStream.
我目前的代码如下:
Var MStream:TMemoryStream; Decoder:TIdDecoderMIME;
begin
Decoder := TIdDecoderMIME.Create(nil);
MStream := TMemoryStream.Create;
Decoder.DecodeToStream(BSting,MStream);
end;
Run Code Online (Sandbox Code Playgroud)
其中BString = My Base64字符串.
现在,当代码运行时,我收到一条错误消息"DecodeToString中的大小不均匀".
有任何想法吗?
任何帮助是极大的赞赏.谢谢.
我想使用该[Files]部分创建一个具有以下格式的新文件:
Program Name plus date plus time .fmpur
Run Code Online (Sandbox Code Playgroud)
我会感激任何想法.
我使用以下脚本来安装Java程序.我正面临着这个脚本的2个问题.如果您知道这些问题的解决方案,请通知我.我非常感谢您的时间
JRE检查发生了2次,即安装开始和安装结束.我希望JRE检查仅在安装开始时发生
我正在检查下面的Windows注册表项以检查JRE,并且此脚本不适用于所有情况.我的意思是有些时候这是有效的,有时候失败了64位JRE安装.我正在寻找一个逻辑来检查所有方案的注册表(即32位,64位和所有Windows版本)
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppName "Test"
#define MyAppVersion "1.0"
#define MyAppPublisher "Test"
#define MyAppURL "gmail.com"
#define MyAppExeName "abc.exe"
#define MinJRE "1.6"
[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
;(To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{200DC169-9647-4295-91B4-B1D1D8482B82} …Run Code Online (Sandbox Code Playgroud) 我想知道是否有办法在pascal中创建一组记录.我正在寻找互联网,并认为这是不可能的.
type
TRecord = record
StrField: string;
IntField: Integer;
end;
TSetOfRecord = set of TRecord;
Run Code Online (Sandbox Code Playgroud) 如何使用FiremonkeyFM³获得屏幕尺寸?以下代码:
var
Size: TPointF;
begin
Size := FMX.Platform.IFMXScreenService.GetScreenSize;
...
end;
Run Code Online (Sandbox Code Playgroud)
导致此编译器错误:
[dcc32 Error] Unit1.pas(46): E2018 Record, object or class type required
Run Code Online (Sandbox Code Playgroud)
我该如何使用IFMXScreenService界面来获取屏幕尺寸?
delphi ×7
dom ×2
inno-setup ×2
base64 ×1
delphi-2007 ×1
delphi-6 ×1
delphi-7 ×1
delphi-xe2 ×1
delphi-xe4 ×1
firemonkey ×1
memorystream ×1
pascal ×1
richedit ×1
sockets ×1
tchromium ×1
twebbrowser ×1
windows-7 ×1