我需要写一些文本到paintbox,我在OnPaint事件中做.当我在方法中设置两次 fontsize时,会重复调用OnPaint事件.
要亲眼看看,试试这个:
procedure TForm1.PaintBox1Paint(Sender: TObject); begin PaintBox1.Canvas.MoveTo(random(PaintBox1.Width),random(PaintBox1.Height)); PaintBox1.Canvas.LineTo(random(PaintBox1.Width),random(PaintBox1.Height)); PaintBox1.Font.Size := 10; PaintBox1.Font.Size := 12; end;
当您运行该应用程序时,您将在paintbox上看到一条"跳"的线.但是,如果删除设置fontsize的一条或两条线,您将看到一条固定线.
为什么会发生这种情况,我该怎么做才能解决这个问题?
确定字符串是否代表网址的最佳方法是什么?我需要让用户在表单中输入网址,但如何验证输入?应允许用户输入" http://www.google.com "或"www.vg.no" 等字符串,但不应要求他输入"http://".此外,有像"tv2.no"这样的网页更难以验证.如果我检查字符串是否包含"www"或"http://"我有一个强有力的线索,但我仍然不是100%肯定.我能100%肯定吗?我不这么认为,但也许SO的一些优秀思想能够启发我吗?
我需要重命名 Oracle 数据库中的约束,但在设计时我不知道旧名称。
我想做的是:
declare
vOldName string;
begin
select CONSTRAINT_NAME
into vOldName
from user_constraints
where TABLE_NAME='AGREEMENT' and CONSTRAINT_TYPE='R';
alter table Agreement rename constraint vOldName to AGREEMENT_FK1;
end;
Run Code Online (Sandbox Code Playgroud)
但我收到错误消息“PLS-00103:在预期以下情况之一时遇到符号“ALTER”:开始案例“。
我该如何解决这个问题?
当我创建递归方法时,我经常包含一个Depth参数,特别是当我需要某种救助机制时.代码通常是这样的
procedure Recurse(<Params>; aDepth : integer = 0);
begin
if aDepth > SomeLimit then
begin
//Tidy up, return best result found>
exit;
end;
<stuff>
if <Condition> then
Recurse(<Params>; aDepth+1)
else
begin
//Tidy up, return result of endnode>
end;
end;
Run Code Online (Sandbox Code Playgroud)
我称之为没有Depth参数
Recurse(<Params>);
Run Code Online (Sandbox Code Playgroud)
还有另一种方法可以轻松找到深度吗?
我有时会设计一个框架,那里到处都有控件.它可以是具有align = alClient的网格,也可能是某些面板和分割器.或者它可能完全是另一回事.无论如何,当我想"恢复为继承"时,我必须通过设置align = alNone并移动控件或直接编辑DFM来为右键单击腾出空间.这有点麻烦.当然,这种情况很少发生,不是什么大不了的事,但仍然会让我感到困扰.如果我可以在结构视图中右键单击它会有所帮助,但是,这不起作用.
有没有人注意到这一点,如果是这样的话; 你如何解决?像我一样,沉默(好,至少)至少是烦恼,还是你找到了一个出色的解决方案?
当我使用位图调用canvas.stretchdraw时,当左>右时,位图将被镜像/翻转.PNG不会发生这种情况.这是一个错误吗?我该怎么办才能修复它?
要复制,请尝试以下代码:
procedure TForm1.TestStretchdraw;
var
vBMP: TBitmap;
vPNG: TPNGImage;
X0,Y0,X1,Y1 : integer;
R : TRect;
procedure FlipRect;
var
T : integer;
begin
T := R.Left;
R.Left := R.Right;
R.Right := T;
end;
begin
vBMP := TBitmap.Create;
vPNG := TPNGImage.Create;
try
vBMP.LoadFromFile('c:\temp\pic\pic.bmp');
vPNG.LoadFromFile('c:\temp\pic\pic.png');
X0 := 0;
Y0 := 0;
X1 := X0 + vBMP.Width;
Y1 := Y0 + vBMP.Height;
R := Rect(X0,Y0,X1,Y1);
FlipRect;
Canvas.StretchDraw(R,vBMP); //This image will be drawn mirrored
X0 := vBMP.Width+10;
Y0 := 0;
X1 := X0 + vPNG.Width; …Run Code Online (Sandbox Code Playgroud) 我有一个包含两个数字列的表,以及对它们的唯一约束.我想插入一对新的值,除非该对已经存在.最简单的方法是什么?
如果我做
insert into TABLE values (100,200)
Run Code Online (Sandbox Code Playgroud)
并且该对已经存在我得到ORA-00001错误,所以我想做类似的事情
insert or update into TABLE values (100,200)
Run Code Online (Sandbox Code Playgroud)