各位老師:
我想做一個顯示床位狀態的視窗,床位表是bcq1,其中bcq13是床位狀態,有兩個值0和1,而不同區域的床位數不同,bck01a是區域的id,我想顯示某個區域的床位狀態,bcq13為0的時候,字體顏色是綠色,為1的時候顯示紅色,可是做出來不管0還是1,都是一個顏色。下面貼上我的代碼,還請老師指點:
procedure TForm1.Button1Click(Sender: TObject);
type
bed=record
m:string;
n,p,q:integer;
end;
var
i,j,k,z:integer;
s:bed;
const
NamePrefix='a' ;
begin
adoquery1.Close;
adoquery1.SQL.Add('select ROW_NUMBER() over(order by bcq01) row,bck01a,bcq04,bcq13 from bcq1 where bck01a=:h');
adoquery1.Parameters.ParamByName('h').Value:='37';
adoquery1.Open;
s.m:=adoquery1.fieldbyname('bcq04').AsString;
s.n:=adoquery1.fieldbyname('bck01a').AsInteger;
s.p:=adoquery1.fieldbyname('bcq13').AsInteger;
s.q:=adoquery1.fieldbyname('row').AsInteger;
z:=adoquery1.RecordCount ;
for i:= 1 to z do
begin
j:=i;
k:=((i-1) div 8)+1;
TLabel.Create(Self).Name := NamePrefix + IntToStr(i);
with TLabel(FindComponent(NamePrefix + IntToStr(i))) do
begin
Left := 30+(j-(k-1)*8)*150; //每行顯示8個
Top := 120+k*50; //每行間距50
Parent := self;
font.Size:=20;
// canvas.Pen.Width:=3;
if s.p =0 then
begin
font.Color:=RGB(0,250,0);
end
else
begin
font.Color:=RGB(250,0,0);
end
end;
end;
end;
uj5u.com熱心網友回復:
改變控制元件的顏色,要通過瀏覽控制元件的方式,來改變它的屬性。uj5u.com熱心網友回復:
self.findcomponent 加入selfuj5u.com熱心網友回復:
謝謝 lyhoo163 ,我大概明白你的意思了,是不是顯示完成之后,再讀取所有的label,可以根據lable的caption進行修改?
uj5u.com熱心網友回復:
for 回圈之前 那些標識的值已經定了,可不就是一個顏色ado.open
while not ado.eof do
begin
//獲得各種標志
//創建label
//根據標識變顏色
ado.next;
end;
uj5u.com熱心網友回復:

1、 VCL := TRzPanel(VCL1.Controls[k]); // 獲取RzPanel控制元件
2、 VCL.Hint:='空床';
VCL.Color:=clBlue;
效果圖。見上圖。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/71391.html
標籤:語言基礎/算法/系統設計
下一篇:自動布線的演算法,你有研究過
