下面兩段代碼如何轉成 delphi 的,多謝1.int Command, i;
AnsiString Name,Desc;
TLocateOptions Opts;
Opts.Clear();
Opts << loCaseInsensitive; for (i = 0; i < ComponentCount; i++)
{
if (dynamic_cast<TMenuItem*>(Components[i]))
{
if (!MENUENABLEDataSet->Locate("MENU",dynamic_cast<TMenuItem*>(Components[i])->Name,Opts))
{
dynamic_cast<TMenuItem*>(Components[i])->Enabled = false;
}
}
}
2. int i,Command;
AnsiString Name,Desc;
for (i=0;i<ComponentCount;i++)
{
if (dynamic_cast<TMenuItem*>(Components[i]))
{ //<指標 void* 定義過的類別> (指標 參考)
Command = dynamic_cast<TMenuItem*>(Components[i])->Command;
Desc = dynamic_cast<TMenuItem*>(Components[i])->Caption;
Name = dynamic_cast<TMenuItem*>(Components[i])->Name;
MENUDataSet->InsertRecord(ARRAYOFCONST((Command,Name,Desc)));
}
}
ShowMessage("菜單重置完成!");
AnsiString Name,Desc;
TLocateOptions Opts;
Opts.Clear();
Opts << loCaseInsensitive; for (i = 0; i < ComponentCount; i++)
{
if (dynamic_cast<TMenuItem*>(Components[i]))
{
if (!MENUENABLEDataSet->Locate("MENU",dynamic_cast<TMenuItem*>(Components[i])->Name,Opts))
{
dynamic_cast<TMenuItem*>(Components[i])->Enabled = false;
}
}
}
2. int i,Command;
AnsiString Name,Desc;
for (i=0;i<ComponentCount;i++)
{
if (dynamic_cast<TMenuItem*>(Components[i]))
{ //<指標 void* 定義過的類別> (指標 參考)
Command = dynamic_cast<TMenuItem*>(Components[i])->Command;
Desc = dynamic_cast<TMenuItem*>(Components[i])->Caption;
Name = dynamic_cast<TMenuItem*>(Components[i])->Name;
MENUDataSet->InsertRecord(ARRAYOFCONST((Command,Name,Desc)));
}
}
ShowMessage("菜單重置完成!");
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBTables, Menus;type
TForm1 = class(TForm)
MENUENABLEDataSet: TTable; //测试用
MENUDataSet: TTable; //测试用
private
{ Private declarations }
public
{ Public declarations }
procedure Proc1;
procedure Proc2;
end;var
Form1: TForm1;implementation//uses DB;{$R *.dfm}{ TForm1 }procedure TForm1.Proc1;
var
i: Integer;
Opts: TLocateOptions;
// Name, Desc: string;
begin
Opts := [];
Include(Opts, loCaseInsensitive);
for i := 0 to ComponentCount - 1 do
begin
if Components[i] is TMenuItem then
if not MENUENABLEDataSet.Locate('MENU', TMenuItem(Components[i]).Name, Opts) then
TMenuItem(Components[i]).Enabled := False;
end;
end;procedure TForm1.Proc2;
var
Command, i: Integer;
Name, Desc: string;
begin
for i := 0 to ComponentCount - 1 do
begin
if Components[i] is TMenuItem then
begin
//<指標 void* 定義過的類別> (指標 參考)
Command := TMenuItem(Components[i]).Command;
Desc := TMenuItem(Components[i]).Caption;
Name := TMenuItem(Components[i]).Name;
MENUDataSet.InsertRecord([Command,Name,Desc]);
end;
end;
ShowMessage('菜單重置完成!');
end;end.