delphi : 从数据库中用自己的名字分配图像
delphi : Assign an image by its own name from the database
我想要 select 将在数据库 table 中按其名称显示的图像。请注意,图像在 PngImageList1
中并且具有相同的名称。我可以替换索引并改用名称吗?请帮忙。
procedure TForm3.FormCreate(Sender: TObject);
var
cartRow: TFrm;
posX,posY : SmallInt;
P : TPanel ;
IMG : TImage;
larn : TLabel;
larc : TLabel;
lari : TLabel;
larfd : TLabel;
imgname,path:string;
begin
ScrollBox1.DestroyComponents;
posX := 0;
posY := 0;
imgname := FDQuery1.FieldByName('ImagePath').AsString;
FDQuery1.First;
while not FDQuery1.Eof do
begin
cartRow := TFrm.Create(ScrollBox1);
cartRow.Parent := ScrollBox1;
cartRow.Name := '';
cartRow.Left := posX - 1;
cartRow.Top := posY - 1;
cartRow.Label1.Caption := FDQuery1.FieldByName('CountryAr').AsString;
cartRow.Label2.Caption := FDQuery1.FieldByName('CountryID').AsString;
PngImageList1.GetBitmap(imgname, cartRow.CIMG.Picture.Bitmap);
cartRow.Width := ScrollBox1.Width;
posY := posY + cartRow.Height + 1;
FDQuery1.Next;
end;
数据库table:
PngImageList1:
最新版本TPngImageList
引入了一个功能IndexByName
:
PngComponents
如果您不能或不想更新,您可以根据原始来源在您的代码中实现类似的功能:
function TPngImageList.FindIndexByName(const AName: string): Integer;
var
I: Integer;
begin
Result := -1;
for I := 0 to PngImages.Count - 1 do begin
if SameText(PngImages[I].Name, AName) then begin
Result := I;
Break;
end;
end;
end;
我想要 select 将在数据库 table 中按其名称显示的图像。请注意,图像在 PngImageList1
中并且具有相同的名称。我可以替换索引并改用名称吗?请帮忙。
procedure TForm3.FormCreate(Sender: TObject);
var
cartRow: TFrm;
posX,posY : SmallInt;
P : TPanel ;
IMG : TImage;
larn : TLabel;
larc : TLabel;
lari : TLabel;
larfd : TLabel;
imgname,path:string;
begin
ScrollBox1.DestroyComponents;
posX := 0;
posY := 0;
imgname := FDQuery1.FieldByName('ImagePath').AsString;
FDQuery1.First;
while not FDQuery1.Eof do
begin
cartRow := TFrm.Create(ScrollBox1);
cartRow.Parent := ScrollBox1;
cartRow.Name := '';
cartRow.Left := posX - 1;
cartRow.Top := posY - 1;
cartRow.Label1.Caption := FDQuery1.FieldByName('CountryAr').AsString;
cartRow.Label2.Caption := FDQuery1.FieldByName('CountryID').AsString;
PngImageList1.GetBitmap(imgname, cartRow.CIMG.Picture.Bitmap);
cartRow.Width := ScrollBox1.Width;
posY := posY + cartRow.Height + 1;
FDQuery1.Next;
end;
数据库table:
PngImageList1:
最新版本TPngImageList
引入了一个功能IndexByName
:
PngComponents
如果您不能或不想更新,您可以根据原始来源在您的代码中实现类似的功能:
function TPngImageList.FindIndexByName(const AName: string): Integer;
var
I: Integer;
begin
Result := -1;
for I := 0 to PngImages.Count - 1 do begin
if SameText(PngImages[I].Name, AName) then begin
Result := I;
Break;
end;
end;
end;