小编WeG*_*ars的帖子

如何移植表示为小数的字符?

如何将Delphi 7中表示为十进制(#0,#1,#9,#10,#13,#32,#128,#255)的字符移植到Delphi Unicode?一些文档(例如Embarcadero的"Unicode世界中的Delphi")只表示应该用实际字符替换它们.例如,我应该使用'€'代替#128.但你会怎么做#0 ??? 还是#9?还是#13?


更新:

看起来这是一个棘手的问题.有人在此声明,128岁以下的所有字符都保持不变.但是,"Unicode世界中的Delphi"另有说明.那么,有一种方法可以在Delphi XE中使用类似#9的东西,或者将Delphi 7中的代码移植到Delphi,Unicode会涉及大量的代码更改吗?

delphi delphi-unicode

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

我应该在TFileStream.Create之后调用Source.Seek(0,soFromBeginning)吗?

我在很少的地方看到过(这里有一个例子:http://pascalgamedevelopment.com/archive/index.php/t-1204.html).

Embarcadero文档没有说明创建流后文件/流中标头的位置.


结论:

由于文档不保证光标的位置,我们应该使用'Seek = 0'.即使现在光标位于文件的开头,我们也永远不知道它会如何及时改变.由于Embarcadero没有记录这一点,看起来他们保留更改权利.

delphi stream

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

如何自动调整TStringGrid行的大小

如何自动调整TStringGrid行(DefaultRowHeight)以匹配使用的字体高度?我做的事情

Grid.DefaultRowHeight:= Grid.Canvas.TextHeight('X')+ 4;

但它不起作用.对于小字体,行的高度太大.


更新:

这似乎是程序逻辑的一个问题.如果我多次更改字体,则行的当前高度与先前字体更改事件的字体大小相匹配(它落后一步).

我使用此代码拦截字体的大小更改:

procedure TStrGrid.CMFontChanged(var Message: TMessage);
begin
  inherited; // let TControl react first
  DefaultRowHeight:= Canvas.TextHeight('ApApM')+ 4;
end;
Run Code Online (Sandbox Code Playgroud)

它就好像程序将是:

begin
  DefaultRowHeight:= Canvas.TextHeight('ApApM')+ 4;
  inherited; 
end;
Run Code Online (Sandbox Code Playgroud)

(首先它改变了高度,然后它实际上设置了正确的字体大小 - 因此高度落后一步)

delphi

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

"TFileOpenDialog需要Windows Vista或更高版本"

我试图使用新的TFileOpenDialog,现在我的应用程序不再与Windows XP兼容.我发现TFileOpenDialog仅适用于Vista和7.似乎TFileOpenDialogand不会检查它是否在Win XP下运行,以便自动和无声地降级到TOpenFileDialog.相反,它只显示一条错误消息.有什么我想念的吗?有一个提供此功能的包装器,或者我必须切换回经典的TOpenFileDialog?

我不明白为什么Embarcadero必须抛弃Borland的帮助系统并从零开始构建一个新的(更糟糕的).

delphi delphi-xe

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

如何在桌面上绘制文字?

我需要直接在桌面上绘制滚动文本.我可以使用DC:= GetDC(0)在所有窗口的顶部绘制文本.但我不希望这样.图纸必须仅在桌面上,而不是在所有打开的窗户顶部.我的文字需要低于桌面上的图标!

我怎么在Delphi中这样做?我猜Windows 7有新的API函数,可以更方便地访问桌面窗口,因为它可以淡化壁纸.

delphi windows-7

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

如何为TFileListBox实现OnSelectionChanged事件?

我想为TFileListBox创建一个新事件.我想知道用户何时选择其他项目.

实现它的最佳方法是在用户按下鼠标按钮时调用该事件,如下所示:

procedure TMyFileList.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
VAR PrevItem: Integer;
begin
 PrevItem:= ItemIndex; <---------- Problem here
 inherited;
 if (Count> 0)
 AND ( PrevItem<> ItemIndex )                                                  
 AND Assigned(FOnSelChaged)
 then FOnSelChaged(Self, PrevItem);
end;
Run Code Online (Sandbox Code Playgroud)

所以,假设已经选择了第一项(ItemIndex = 0).一旦我按下鼠标按钮选择第二个项目,我就进入MouseDown程序.但是这里的ItemIndex已经是1而不是0.为什么?

delphi

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

TPanel作为MDI应用程序中的启动画面

我想在一个表单中间显示一个TPanel,它是其他表单的MDI父级.某种"泼溅"的形式,但并不完全.该面板将包含用户将调用misc的链接/按钮/快捷方式.功能.

主要要求是当我点击MDI子项时,TPanel应该放在MDI子表单下面.但是,就目前而言,TPanel将始终保持在MDI子表单之上.

调用Panel.SendToBack将使面板消失.我能怎么做?

delphi

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

VertScrollBar.Visible始终返回TRUE

我有一个从TScrollBox派生的自定义控件.在运行时,我需要知道天气垂直滚动条是否可见.如果我询问Visible属性,它总是返回true,无论滚动条是否可见!

function TMyScrollPanel.ScrollVisible: boolean;
begin
 Result:=  Self.VertScrollBar.Visible;            <----------- always true
end;
Run Code Online (Sandbox Code Playgroud)

但是,这可以正常工作:

function VertScrollBarVisible(WindowHandle: THandle): Boolean;                  
begin
 Result:= (GetWindowlong(WindowHandle, GWL_STYLE) AND WS_VSCROLL) <> 0
end;
Run Code Online (Sandbox Code Playgroud)

第一个功能有什么问题?

delphi

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

什么是dclsmpedit?

什么是dclsmpedit包(Embarcadero Editor Script Enhancements)?
我需要它吗?

我不确定'编辑脚本增强功能'是做什么的.

delphi

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

TListView - 如何在调整大小时重新排列项目

我有一个显示小缩略图的TListView(ViewStyle:=vsIcon).在运行时我将图像分配给项目:

  for i := 0 to Total - 1 DO
   with ListView.Items.Add DO
     begin
      Caption := 'Item ' + IntToStr(i);
      ImageIndex := i;
     end;
Run Code Online (Sandbox Code Playgroud)

在启动时,表单不是很宽,缩略图只显示在3列上.不幸的是,如果我调整窗体(和ListView)的大小,列数将保持为3,而在右侧,我将有很多空格.

这也行不通:

procedure TForm1.FormCreate(Sender: TObject);
begin
 ListView.IconOptions.AutoArrange := TRUE;
end;
Run Code Online (Sandbox Code Playgroud)

如何重新排列项目以填充空白区域?
有没有像AutoArrange这样的房产?


更新:
我删除了旧控件,并在表单上添加了新控件.
现在ListView.IconOptions.AutoArrange有效.在之前的控件中有一些东西(我做了一些设置)阻止了AutoArrange工作.

delphi listview

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

标签 统计

delphi ×10

delphi-unicode ×1

delphi-xe ×1

listview ×1

stream ×1

windows-7 ×1