我有一个基于TInterfacedObject的类.我将它添加到TTreeNode的Data属性.
TFacilityTreeItem=class(TInterfacedObject)
private
m_guidItem:TGUID;
m_SomeOtherNode:TTreeNode;
public
end;
Run Code Online (Sandbox Code Playgroud)
我创建了这个对象的许多实例,并假设因为它们被引用计数,我不需要释放它们.那会很方便.
但是,在检查时,我打开了ReportMemoryLeaksOnShutdown,发现它们毕竟没有被释放.
这些对象是在放置在主窗体上的框架中创建的.在主窗体的FormClose中,我清除树节点,以便释放每个对象.
发生了什么?
谢谢您的帮助!
有没有办法暂停表单上的所有锚定控件暂时移动或调整大小?即:
procedure ScaleFormBy(AForm: TForm; n, d: Integer);
begin
AForm.SuspendAnchors();
try
AForm.ScaleBy(n, d);
finally
AForm.ResumeAnchors();
end;
end;
Run Code Online (Sandbox Code Playgroud)
我需要这样做,因为我正在打电话
AForm.ScaleBy(m, d);
Run Code Online (Sandbox Code Playgroud)
哪个不能正确处理锚定控件.(它将左侧+右侧或顶部+底部锚定控件推离窗体边缘.
注意:我想禁用Anchors,而不是Alignment.
虚拟树视图垂直滚动的像素,不同的方式,标准德尔福网格,TListView和TTreeView(或大部分我所知道的其他此类管制的)滚动一行,并保持全线可见在任何时候控制的顶部.当我使用光标键进行导航时,根据方向,第一行或最后一行是完全可见的.使用鼠标滚动时无论如何都没有对齐.
例如,使用Delphi 2007和2009中的Structure窗口可以观察到此行为.
有没有办法设置许多属性以具有标准Windows控件的行为?或者是否有一组补丁来实现这一目标?
在下面的代码(灵感来自这个片段),我用一个单一的事件处理程序buttonClick来改变窗口的标题.目前,我需要评估事件的Id是否与按钮的Id相对应.如果我决定添加50个按钮而不是2个,则此方法可能会变得很麻烦.有一个更好的方法吗?
import wx
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY, 'wxBitmapButton',
pos=(300, 150), size=(300, 350))
self.panel1 = wx.Panel(self, -1)
self.button1 = wx.Button(self.panel1, id=-1,
pos=(10, 20), size = (20,20))
self.button1.Bind(wx.EVT_BUTTON, self.buttonClick)
self.button2 = wx.Button(self.panel1, id=-1,
pos=(40, 20), size = (20,20))
self.button2.Bind(wx.EVT_BUTTON, self.buttonClick)
self.Show(True)
def buttonClick(self,event):
if event.Id == self.button1.Id:
self.SetTitle("Button 1 clicked")
elif event.Id == self.button2.Id:
self.SetTitle("Button 2 clicked")
application = wx.PySimpleApp()
window = MyFrame()
application.MainLoop()
Run Code Online (Sandbox Code Playgroud) 好的,我有以下功能:
function TfPackagedItemEdit.GetRTFDescription: TStringList;
begin
Result.Text := richDescription.Lines.Text; //stringlist
end;
Run Code Online (Sandbox Code Playgroud)
编译器会对此行生成以下警告:
[DCC警告] W1035函数'GetRTFDescription'的返回值可能未定义
关于如何清除此警告的任何想法?(除了在项目选项中关闭它)
我试过了:
function TfPackagedItemEdit.GetRTFDescription: TStringList;
begin
Result.Text := '';
Result.Text := richDescription.Lines.Text;
end;
Run Code Online (Sandbox Code Playgroud)
但这也不起作用.
在我的TEdit字段中,我在表单中有文本<number1>..<number2>.
我的想法是:
当用户使用TAB另一个控件输入控件时,number1将被选中.
当我的TEdit控件有焦点并且用户TAB再次按下时,我想要number2选择并number1取消选择.
如果当前插入位置位于number2所在的位置,则按下TAB应该正常并将焦点移动到表单上的下一个控件.
我有2个问题.
当"编辑"字段已激活时,我无法按下Tab键.我只能在输入/聚焦此控件时捕获它.
我不知道是否有类似于#0的键,所以我可以把钥匙变成NoOP.
有什么想法,怎么做?
我想创建德尔福部件,如上下文菜单TDBGrid,TTreeView或者类似的.我怎样才能做到这一点?
我用Delphi 7编写的程序编译好了,但是当我运行它时它会给我错误信息:
Project1.Exe引发异常类EReadError,消息'属性持久性不存在'.流程已停止.
这只是在我安装TMS Component Pack以用于此项目之后才开始.谢谢你的帮助.
创建新的TImage时,它是透明的.在将对象绘制到此图像后,我想清除它们.请注意,我需要保持图像透明,因为TImage被用作另一个图像的叠加层.
TImage的某种"清晰"功能是最好的.我想我在这里缺少一些简单的东西,我在TImage菜单中找不到任何明确的功能.
我遇到了一个小问题.我正在动态生成一些控件并将它们放在一个TScrollbox组件上.但我注意到,如果滚动条可见,用户可以清楚地看到正在创建和放置的每个控件.所以看起来很多工作正在进行而且很慢.
我隐藏了滚动条并在其上生成了所有控件,这花费的时间更少,没有闪烁和相似.但这是问题所在.当我再次显示滚动条时,直到我实际调整表单大小时才会显示其滚动条.(滚动条的对齐方式是alClient)
有想法该怎么解决这个吗?
尝试重新粉刷,但它没有奏效.刷新也不起作用.
谢谢
编辑:
TScrollBox(Form1.FindComponent('termai')).Visible:= false;
for I := 0 to mazgas.GrafasPagalVarda(sActiveGrafas).Termai.Count - 1 do
begin
fNaujasTermas(i,oHook);
end;
TScrollBox(Form1.FindComponent('termai')).Visible := true;
Run Code Online (Sandbox Code Playgroud)
上面的代码显示了我如何隐藏和显示滚动框.
fNaujasTermas生成一个包含多个轨迹栏,图像和编辑的面板.
我不确定可能会有一步一步的解释.只需创建一个过程,它将生成一些带有许多控件的面板,并将ScrollBox设置为父级.在生成任何内容之前隐藏滚动框,并在完成后取消隐藏它.
哦顺便说一句,面板是对齐的alTop.因此,每次创建新面板并将其放入滚动框时,它将显示在顶部,而所有其他面板将向下移动.
这就是我创建滚动条本身的方式
pTermai := TScrollBox.Create(Self);
pTermai.Parent := pLeft;
pTermai.Align := alClient;
pTermai.Name := 'termai';
pTermai.BorderStyle := bsNone;
pTermai.VertScrollBar.Increment := 40;
Run Code Online (Sandbox Code Playgroud)
EDIT2:我想我知道如何重现这一点.
看起来,当向滚动框添加新面板时,它不会将其计入已存在于该滚动框中的所有控件的总高度.
所以举个例子.让我们说1面板的高度为200px.
ScrollBox高度为300px.
因此,在创建2个高度为400px的面板后,即使第二个面板的一半不可见,滚动框也不会显示滚动条.如果我再添加一个面板= 600px,滚动条将显示滚动条,看起来它只会滚动每2个面板,而不是3.当尝试滚动这样的窗口时,值会重新计算,一切都很好地显示.
所以主要的问题是,如何使滚动条"及时"显示滚动条,这样没有面板被切成一半?
delphi ×9
delphi-2009 ×2
contextmenu ×1
events ×1
exception ×1
fonts ×1
keypress ×1
layout ×1
python ×1
timage ×1
tscrollbox ×1
wxpython ×1