delphi vcl-如何在标签中设置数据库表的值?

时间:2018-10-28 02:24:08

标签: delphi vcl

我想在正在创建的框架中查看数据库表的记录,并且运行时包含用于显示此数据的标签

我不知道代码是什么 数据显示为重复。

procedure TForm3.Button1Click(Sender: TObject);
var
  cartRow: TFrm;
  lin :SmallInt;
  posX,posY : SmallInt;
  s , id: string;
  i : Integer;
begin
  ScrollBox1.DestroyComponents;
  s := FDQuery1.FieldByName('CountryAr').AsString;
  id:= FDQuery1.FieldByName('CountryID').AsString;
  posX := 0;
  posY := 0;
  for lin := 0 to FDTable1.RecordCount - 1 do
  begin
    cartRow := TFrm.Create(ScrollBox1);
    cartRow.Parent :=ScrollBox1;
    cartRow.Name := '';
    cartRow.Left := posX -1;
    cartRow.Top := posY -1;
    cartRow.Label1.Caption := (s);
    cartRow.Label2.Caption :=(id);
    cartRow.Width := (ScrollBox1.Width) -3;
    cartRow.Height := 35;
    posY := posY + cartRow.Height +1;
  end;
  cartRow.Free;`

image

1 个答案:

答案 0 :(得分:1)

您的代码中存在多个问题。首先,将值分别分配给 return fac; //<-----should return value #include <stdio.h> int checkiffactorial(); int factorial(int n); int number; int main() { int answer, n, i; printf("Enter a number: "); scanf("%d", &number); answer = checkiffactorial(); if (answer == 1) { printf("It's a factorial"); } else { printf("It's not a factorial"); } } int checkiffactorial() { static int whichnumber = 1; int currnumber; if (whichnumber > number) { return 0; } if(whichnumber <= number) { currnumber = factorial(whichnumber); if (currnumber == number) //<----should check whether it's same with the number { return 1; } whichnumber++; checkiffactorial(); } } int factorial(int n) { int i; int fac=1; //<-----initialize this variable for(i=1; i<=n; ++i) { fac = fac * i; } return fac; //<-----should return value } ,然后对每个标签使用相同的值,而在分配之后忽略数据库中的任何内容。其次,您永远不要在循环中前进记录指针,这意味着它将以无限循环结束。第三,您正在遍历s字段,但是从id中读取值。第四,您不必要使用对FDTable1的调用,而不是简单的FDQuery1循环。最后,您在不应该释放的时候释放RecordCount;您将while not Eof分配为创建的控件的所有者,这意味着当滚动框被释放时,滚动框将释放它。

类似这样的方法对您来说会更好:

CartRow