Mik*_*nni 2 delphi compiler-warnings tscrollbox delphi-xe7
我有一个同步Scrollboxes的简单示例,我控制哪一方通过单选按钮同步 - 同步左侧或右侧.当我编译时,我收到编译器消息:
[dcc32警告] Unit1.pas(51):W1036变量'ScrlBox1'可能尚未初始化
[dcc32警告] Unit1.pas(51):W1036变量'ScrlBox2'可能尚未初始化
这是一个简单的例子:
procedure TForm1.Button1Click(Sender: TObject);
var
ScrlBox1, ScrlBox2: TScrollBox;
begin
if radiobtn_SyncLeftSides.Checked then // Snyc Left side
begin
ScrlBox1 := ScrollBoxLeft1;
ScrlBox2 := ScrollBoxLeft2;
end
else if radiobtn_SyncrightSides.Checked then // Snyc Right side
begin
ScrlBox2 := ScrollBoxRight1;
ScrlBox1 := ScrollBoxRight2;
end;
// Sync scroll boxes
ScrlBox2.VertScrollBar.Position := ScrlBox1.VertScrollBar.Position;
ScrlBox2.HorzScrollBar.Position := ScrlBox1.HorzScrollBar.Position;
end;
Run Code Online (Sandbox Code Playgroud)
这是什么问题?
如果我在开头添加这个消息就消失了:
ScrlBox1:= TScrollBox.Create(nil);
ScrlBox2:= TScrollBox.Create(nil);
Run Code Online (Sandbox Code Playgroud)
但我认为创建滚动框变量是不必要的,对吧?这些只是表单上控件的变量指针.
如果这两个 radiobtn_SyncLeftSides和radiobtn_SyncrightSides未被选中,你是不是初始化ScrlBox1和ScrlBox2使用前变量.这就是编译器所抱怨的.
procedure TForm1.Button1Click(Sender: TObject);
var
ScrlBox1, ScrlBox2: TScrollBox;
begin
if radiobtn_SyncLeftSides.Checked then // Snyc Left side
begin
ScrlBox1 := ScrollBoxLeft1;
ScrlBox2 := ScrollBoxLeft2;
end
else if radiobtn_SyncrightSides.Checked then // Snyc Right side
begin
ScrlBox2 := ScrollBoxRight1;
ScrlBox1 := ScrollBoxRight2;
end else
begin
// NOT INITIALIZED HERE!!!!!
end;
// Sync scroll boxes
ScrlBox2.VertScrollBar.Position := ScrlBox1.VertScrollBar.Position;
ScrlBox2.HorzScrollBar.Position := ScrlBox1.HorzScrollBar.Position;
end;
Run Code Online (Sandbox Code Playgroud)
如果您不想同步滚动,则应该只Exit执行以下过程:
procedure TForm1.Button1Click(Sender: TObject);
var
ScrlBox1, ScrlBox2: TScrollBox;
begin
if radiobtn_SyncLeftSides.Checked then // Snyc Left side
begin
ScrlBox1 := ScrollBoxLeft1;
ScrlBox2 := ScrollBoxLeft2;
end
else if radiobtn_SyncrightSides.Checked then // Snyc Right side
begin
ScrlBox2 := ScrollBoxRight1;
ScrlBox1 := ScrollBoxRight2;
end else
begin
Exit; // <-- HERE
end;
// Sync scroll boxes
ScrlBox2.VertScrollBar.Position := ScrlBox1.VertScrollBar.Position;
ScrlBox2.HorzScrollBar.Position := ScrlBox1.HorzScrollBar.Position;
end;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |