- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我打开一个演示(ICS - SingleD)。有常规控件(编辑、标签、面板、按钮、备忘录)和从 Internet 下载文件的组件。
我想将它们全部移动到一个框架中。
我创建一个框架并且:
1) 从主窗体中剪切除组件之外的所有控件并将它们粘贴到框架中。然后我更改新框架控件的代码(例如,只是从“Form1.URLEdit.Text”中剪切“Form1” - 它将在框架中使用,或者添加“Frame11”:Frame11.ProgressBar,这样它就可以工作从主窗体)。
结果:组件没有在备忘录、进度条等中显示必要的信息。组件的事件没有任何反应(即使编写“deletefile('1.txt')”)。可视控件的事件不起作用(例如 OnEdit1Change)。
2)剪切所有控件和组件,将它们粘贴到框架中(所有代码都更改为在框架中工作)。
结果:一个按钮有效,另一个按钮无效等等。即使编写 MainForm.Caption:='xxx' - 单击按钮也不会发生任何事情。如果创建一个新按钮并编写相同的代码 - 一切都会起作用。
E.G. TFrame1.btnStopClick 在这里不起作用:
MAIN FORM
unit main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, clDownLoader, clWinInet, clDC, clDCUtils, clMultiDC, clSingleDC,
clProgressBar, ExtCtrls, ComCtrls, Unit1;
type
TDownLoaderTest = class(TForm)
Frame11: TFrame1;
// procedure btnDownLoadClick(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure Button1Click(Sender: TObject);
procedure Frame11Button2Click(Sender: TObject);
{ procedure btnGetInfoClick(Sender: TObject);
procedure btnStopClick(Sender: TObject);
procedure edtFileChange(Sender: TObject);
procedure edtUserChange(Sender: TObject);
procedure edtPasswordChange(Sender: TObject);
procedure edtURLChange(Sender: TObject);
procedure edtDirectoryChange(Sender: TObject);}
// procedure Button1Click(Sender: TObject);
// procedure edtThreadCountChange(Sender: TObject);
// procedure edtBufferSizeChange(Sender: TObject);
private
public
end;
var
DownLoaderTest: TDownLoaderTest;
implementation
{$R *.DFM}
procedure TDownLoaderTest.Button1Click(Sender: TObject);
begin
DownLoaderTest.Caption:='1111';
deletefile('aaa');
end;
procedure TDownLoaderTest.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
// CanClose := not Frame11.clDownLoader1.IsBusy;
end;
procedure TDownLoaderTest.Frame11Button2Click(Sender: TObject);
begin
Frame11.Button1Click(Sender);
end;
end.
FRAME
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, clMultiDC, clSingleDC, clDownLoader, ComCtrls, StdCtrls,
clProgressBar,clWinInet, clDC, clDCUtils;
type
TFrame1 = class(TFrame)
btnDownLoad: TButton;
btnGetInfo: TButton;
btnStop: TButton;
clProgressBar1: TclProgressBar;
edtBufferSize: TEdit;
edtDirectory: TEdit;
edtFile: TEdit;
edtPassword: TEdit;
edtStatistic: TEdit;
edtThreadCount: TEdit;
edtURL: TEdit;
edtUser: TEdit;
Label1: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
memErrors: TMemo;
memInfo: TMemo;
memPreview: TMemo;
updBufferSize: TUpDown;
updThreadCount: TUpDown;
clDownLoader1: TclDownLoader;
Button1: TButton;
Button2: TButton;
procedure btnDownLoadClick(Sender: TObject);
procedure btnGetInfoClick(Sender: TObject);
procedure btnStopClick(Sender: TObject);
procedure edtFileChange(Sender: TObject);
procedure edtUserChange(Sender: TObject);
procedure edtPasswordChange(Sender: TObject);
procedure edtURLChange(Sender: TObject);
procedure edtDirectoryChange(Sender: TObject);
procedure edtThreadCountChange(Sender: TObject);
procedure edtBufferSizeChange(Sender: TObject);
procedure clDownLoader1DataItemProceed(Sender: TObject;
ResourceInfo: TclResourceInfo; AStateItem: TclResourceStateItem;
CurrentData: PAnsiChar; CurrentDataSize: Integer);
procedure clDownLoader1UrlParsing(Sender: TObject;
var URLComponents: URL_COMPONENTS);
procedure clDownLoader1StatusChanged(Sender: TObject;
Status: TclProcessStatus);
procedure clDownLoader1Changed(Sender: TObject);
procedure clDownLoader1GetResourceInfo(Sender: TObject;
ResourceInfo: TclResourceInfo);
procedure clDownLoader1DataTextProceed(Sender: TObject; Text: TStrings);
procedure clDownLoader1Error(Sender: TObject; const Error: string;
ErrorCode: Integer);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
implementation
uses main;
var FIsLoading: Boolean;
{$R *.dfm}
procedure TFrame1.btnDownLoadClick(Sender: TObject);
begin
memInfo.Lines.Clear();
memErrors.Lines.Clear();
clDownLoader1.Start(True);
end;
procedure TFrame1.btnGetInfoClick(Sender: TObject);
begin
memInfo.Lines.Clear();
memErrors.Lines.Clear();
clDownLoader1.GetResourceInfo(True);
end;
//////// btnStopClick Does NOT work!!!!
procedure TFrame1.btnStopClick(Sender: TObject);
begin
DownLoaderTest.Caption:='sss';
clDownLoader1.Stop();
end;
//////// btnStopClick WORKS!!!!!!!!
procedure TFrame1.Button1Click(Sender: TObject);
begin
DownLoaderTest.Caption:='1111';
clDownLoader1.Stop();
end;
procedure TFrame1.clDownLoader1Changed(Sender: TObject);
begin
if FIsLoading then Exit;
FIsLoading := True;
try
edtURL.Text := clDownLoader1.URL;
edtUser.Text := clDownLoader1.UserName;
edtPassword.Text := clDownLoader1.Password;
edtFile.Text := clDownLoader1.LocalFile;
edtDirectory.Text := clDownLoader1.LocalFolder;
updThreadCount.Position := clDownLoader1.ThreadCount;
updBufferSize.Position := clDownLoader1.BatchSize;
finally
FIsLoading := False;
end;
end;
procedure TFrame1.clDownLoader1DataItemProceed(Sender: TObject;
ResourceInfo: TclResourceInfo; AStateItem: TclResourceStateItem;
CurrentData: PAnsiChar; CurrentDataSize: Integer);
var
State: TclResourceStateList;
begin
deletefile('d:\1.rar');
State := AStateItem.ResourceState;
edtStatistic.Text := Format('%.2n of %.2n Kb proceed, speed %.2n Kb/sec, elapsed %.2n min, remains %.2n min',
[State.BytesProceed / 1024, State.ResourceSize / 1024, State.Speed / 1024,
State.ElapsedTime / 60, State.RemainingTime / 60]);
end;
procedure TFrame1.clDownLoader1DataTextProceed(Sender: TObject; Text: TStrings);
begin
memPreview.Lines.Assign(Text);
end;
procedure TFrame1.clDownLoader1Error(Sender: TObject; const Error: string;
ErrorCode: Integer);
begin
memErrors.Lines.Text := (Sender as TclDownLoader).Errors.Text;
end;
procedure TFrame1.clDownLoader1GetResourceInfo(Sender: TObject;
ResourceInfo: TclResourceInfo);
var
s: String;
begin
if (ResourceInfo <> nil) then
begin
s := 'Resource ' + ResourceInfo.Name + '; Size ' + IntToStr(ResourceInfo.Size)
+ '; Date ' + DateTimeToStr(ResourceInfo.Date)
+ '; Type ' + ResourceInfo.ContentType;
if ResourceInfo.Compressed then
begin
s := s + '; Compressed';
end;
end else
begin
s := 'There are no any info available.';
end;
memInfo.Lines.Add(s);
end;
procedure TFrame1.clDownLoader1StatusChanged(Sender: TObject;
Status: TclProcessStatus);
var
s: String;
begin
case Status of
psSuccess: MessageBox(0, 'Process completed successfully', 'Message', 0);
psFailed:
begin
s := (Sender as TclDownLoader).Errors.Text;
MessageBox(0, PChar(s), 'Error', 0);
end;
psTerminated: MessageBox(0, 'Process stopped', 'Message', 0);
psErrors: MessageBox(0, 'Process completed with some warnings', 'Message', 0);
end;
end;
procedure TFrame1.clDownLoader1UrlParsing(Sender: TObject;
var URLComponents: URL_COMPONENTS);
begin
with URLComponents do
begin
memInfo.Lines.Add('Scheme: ' + lpszScheme);
memInfo.Lines.Add('Host: ' + lpszHostName);
memInfo.Lines.Add('User: ' + lpszUserName);
memInfo.Lines.Add('Path: ' + lpszUrlPath);
memInfo.Lines.Add('Extra: ' + lpszExtraInfo);
end;
end;
procedure TFrame1.edtBufferSizeChange(Sender: TObject);
begin
if FIsLoading then Exit;
clDownLoader1.BatchSize := updBufferSize.Position;
end;
procedure TFrame1.edtDirectoryChange(Sender: TObject);
begin
if FIsLoading then Exit;
clDownLoader1.LocalFolder := edtDirectory.Text;
end;
procedure TFrame1.edtFileChange(Sender: TObject);
begin
if FIsLoading then Exit;
clDownLoader1.LocalFile := edtFile.Text;
end;
procedure TFrame1.edtPasswordChange(Sender: TObject);
begin
if FIsLoading then Exit;
clDownLoader1.Password := edtPassword.Text;
end;
procedure TFrame1.edtThreadCountChange(Sender: TObject);
begin
if FIsLoading then Exit;
clDownLoader1.ThreadCount := updThreadCount.Position;
end;
procedure TFrame1.edtURLChange(Sender: TObject);
begin
if FIsLoading then Exit;
clDownLoader1.URL := edtURL.Text;
end;
procedure TFrame1.edtUserChange(Sender: TObject);
begin
if FIsLoading then Exit;
clDownLoader1.UserName := edtUser.Text;
end;
end.
我对框架做错了什么?这不是组件或控件的问题。
谢谢!
最佳答案
由于剪切和粘贴,按钮及其单击处理程序在框架的 .dfm 中没有关联。
在设计编辑器中选择框架的“btnStop”,单击 OI 的“Events”选项卡,选择“OnClick”,然后单击右侧的向下箭头,从列表中找到并选择“btnStopClick”。
关于Delphi:组件和控件不能与 Frame 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6644232/
最近,我在 XCode 上的调试器停止正常工作,并给出了以下错误: 此帧内的前一帧(gdb 无法展开超过此帧) 我已经浏览过 SO 的另一个线程,谈论丢失的符号。我通过删除符号目录并让它从 iPod
当我在设备上遇到断点时,出现以下调试器错误: 来自调试器的错误:此帧内的上一帧(gdb 无法展开超过此帧) 当应用程序遇到断点时,就会发生这种情况。如果我点击调试器中的继续按钮,它会愉快地继续,直到下
如何在 WinRT XAML 应用程序中操作框架的历史记录? 用户将从我的中心页面开始,他们可以在其中选择一个现有项目以转到其编辑屏幕,或者他们可以选择“新项目”。 “新项目”将引导他们完成一个简短的
2 帧,我希望第 2 帧“覆盖”/更新第 1 帧。基本上,其中 Table1-colB-value = Table2-oldB-value,用 Table2-newB-value 覆盖 Table1-
我正在尝试逐帧动画,但它给了我一个强制关闭,我不确定为什么它给我一个强制关闭。在我看来一切都很好。 这是我的代码,我希望有人能帮忙吗?提前致谢。 动画测试.java import android.ap
这是我的主课。 package pomsystem; public class POMSystem { public static void main(String[] args) {
如果为TRUE,我想从函数返回一个data.frame,否则使用return(ifelse(condition, mydf, NA)) 返回NA 但是, ifelse 会从 data.frame 中删
我正在处理两个 csv 文件并导入为数据框 df1 和 df2 df1 有 50000 行,df2 有 150000 行。 我想比较(遍历每一行)df2 的“时间”df1,求时间差,返回所有列的值对应
我将许多文件夹中的小文本文件读取到一个列表中。因此,我有一个长度为 n 的列表,其中包含 2 个 data.frames。 这是列表元素 3 的示例(在问题末尾输入) ip_list[[3]] $`d
为了找出数据框 df.a 是否是数据框 df.b 的子集,我做了以下操作: df.a semi_join(df.b, df.a) Joining by: c("x", "y") x y 1 1
在某些情况下,出于实现原因,我有一个只包含一个列的 data.frame df=as.data.frame(alpha=1:15) 如果我现在使用 df[-1, ] 它返回一个向量,但我想将它保留为一
Windows 8.1 商店应用中的 Frame.Navigate() 和 this.Frame.Navigate() 有什么区别? 这有什么区别 Frame.Navigate(typeof(Logi
我有两个 data.frames (df1, df2),我想用 df1$V2 的值替换 P1-P10 列中的字母值,但保留前两列df2. df1 = data.frame(V1=LETTERS, V2
有没有更好的方法来制作与现有 data.frame 具有相同维度、列名和行名的空白 data.frame? BAM<-read.table(~/myfile) # 10 rows and 10 co
我有一个列表 data.frame s。例如 set.seed(1) my_list result.df id var_p var_m var_d var_a
假设我有两个数据框 df1 和 df2 如下 Df1 Id Price Profit Month 10 5 2 1 10 5 3 2 10 5 2
我将创建一个网站,除了它自己的内容之外,它还将链接(在 iframe 中)到世界最大的报纸网站,如纽约时报、金融时报和其他一些网站。 但是我遇到了框架许可的问题。例如,纽约时报向我展示了一个错误 Lo
假设我有一个 data.frame: df x x A 1 10 2 20 3 30 从文档中(参见 ?"[" )您可以找到: If drop=TRUE the result is coer
我有一个想要克隆的现有 data.frame,但没有其中的值。 IE。我希望新框架具有与现有框架相同的列名称和类型。原始帧的大小可能为 GB 量级,因此复制和删除数据似乎不是正确的方法,并且迭代现有列
给定两个在列名称/数据类型方面相同的数据帧,其中某些列唯一标识行,是否有一种有效的函数/方法可以让一个数据帧“更新”另一个数据帧? 例如,在下面的例子中,原始和替换由'Name'和'Id'标识>。 g
我是一名优秀的程序员,十分优秀!