大家帮我看看哪里出问题了  image1.Canvas.TextOut(x ,y,name)没有输出,x,y,name好象都没取到值
procedure TForm3.Button1Click(Sender: TObject);
vari:integer;
name:string;
x:integer;
y:integer;
di:integer;begin
   query1.Close;
   query1.SQL.Clear;
   query1.SQL.Add('select max(id) as id   from ip.db ');
   query1.Open;
   di:=query1.fieldbyname('id').AsInteger;       for i:=0 to di do
         begin    query2.Close;
    query2.SQL.Clear;
    query2.SQL.Add('select *  from ip.db where id=''i''');
    query2.Open;
   name:=query2.fieldbyname('名称').AsString;
   x:= query2.fieldbyname('x').AsInteger;
   y:=query2.fieldbyname('y').AsInteger;
    image1.Canvas.TextOut(x ,y,name);
  end;
 
end;

解决方案 »

  1.   

    这个很好调试啊  name:=query2.fieldbyname('名称').AsString; 
      x:= query2.fieldbyname('x').AsInteger; 
      y:=query2.fieldbyname('y').AsInteger; x:=1;y:=1; name:='test';
        image1.Canvas.TextOut(x ,y,name); 就可以看出是 TextOut问题 ,还读数据的问题TextOut之前往要 Set Font Color之类
      

  2.   

    你可以在你的这段代码里设置断点调试一下
    看到底问题出在哪
    看x,y,name取没取上值
      

  3.   

    调试了X,Y,NAME 没有取上值
      

  4.   

    我调式了一下,i是取到值了,但 query2.SQL.Add('select *  from ip.db where id=''i''') 查询后,x,y,name都没有取到值,是什么原因
     for i:=0 to di do    begin
        edit1.Text:=IntToStr(i) ;//i有值
        query2.Close;
        query2.SQL.Clear;
        query2.SQL.Add('select *  from ip.db where id=''i''');
        query2.Open;
        name:=query2.fieldbyname('名称').AsString;
        x:= query2.fieldbyname('x').AsInteger;
        y:=query2.fieldbyname('y').AsInteger;
        edit3.Text:= query2.fieldbyname('名称').AsString;//没值
        image1.Canvas.TextOut(x ,y,name);
      

  5.   

    这也就是说你的SQL语句没有从数据库中取出值来 查下你的SQL语句吧
      

  6.   

    还有 你的查询是写在一个for循环里面  
    如果最后一个i值所对应的id没有对应的数据 那么你的 x y name 显然就是空的 
      

  7.   

    应该是没有指定打印机!设置了Image的Width height了吗?