Q&A

  • panel색깔바꾸기.
panel의 색깔을 바꾸려고 하려는데 잘 안돼네요..

테이블의 3번째 필드에서 데이타가 0이면 색깔을 빨간색으로 그 이외의 값은

파란색으로 panel의 색깔을 바꾸려고 합니다.

밑에는 제가 한 건데 안돼네여..

꼭 부탁드립니다.



unit Unit1;



interface



uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

Db, ADODB, ExtCtrls, StdCtrls;



type

TForm1 = class(TForm)

Panel1: TPanel;

DataSource1: TDataSource;

ADOQuery1: TADOQuery;

Button1: TButton;

procedure Button1Click(Sender: TObject);



private

{ Private declarations }

public

procedure pump1;

{ Public declarations }

end;



var

Form1: TForm1;



implementation



{$R *.DFM}



procedure TForm1.pump1;

var

i : integer;

begin

adoquery1.First;

for i := 1 to adoquery1.recordcount do

begin

if adoquery1.Fields[2].Value = '0' then

begin

panel1.color := clblue;

end

else

panel1.color := clred;

end;

adoquery1.next;

end;



procedure TForm1.Button1Click(Sender: TObject);

begin

application.Terminate;

end;



end.



3  COMMENTS
  • Profile
    블랙봉 2001.05.15 00:15
    이우호 wrote:

    > panel의 색깔을 바꾸려고 하려는데 잘 안돼네요..

    > 테이블의 3번째 필드에서 데이타가 0이면 색깔을 빨간색으로 그 이외의 값은

    > 파란색으로 panel의 색깔을 바꾸려고 합니다.

    > 밑에는 제가 한 건데 안돼네여..

    > 꼭 부탁드립니다.

    >

    > unit Unit1;

    >

    > interface

    >

    > uses

    > Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    > Db, ADODB, ExtCtrls, StdCtrls;

    >

    > type

    > TForm1 = class(TForm)

    > Panel1: TPanel;

    > DataSource1: TDataSource;

    > ADOQuery1: TADOQuery;

    > Button1: TButton;

    > procedure Button1Click(Sender: TObject);

    >

    > private

    > { Private declarations }

    > public

    > procedure pump1;

    > { Public declarations }

    > end;

    >

    > var

    > Form1: TForm1;

    >

    > implementation

    >

    > {$R *.DFM}

    >

    > procedure TForm1.pump1;

    > var

    > i : integer;

    > begin

    > adoquery1.First;

    > for i := 1 to adoquery1.recordcount do

    > begin

    > if adoquery1.Fields[2].Value = '0' then

    > begin

    > panel1.color := clblue;

    > end

    > else

    > panel1.color := clred;

    > end;

    > adoquery1.next;

    > end;

    >

    > procedure TForm1.Button1Click(Sender: TObject);

    > begin

    > application.Terminate;

    > end;

    >

    > end.

    >



    현재 선택된 레코드의 3번째 필드 값에 의해 패널의 색상을 바꾸실려고 그러시는 건가요?

    지금 현재 코딩을 보면 항상 맨 마지막 레코드의 값에 의해 색상이 결정되도록 되어 있는 것 같네요.

    ADOQuery에도 AfterScroll 이벤트가 있는 것 같네요. 그 이벤트에서 색상 변경하는 루틴을 넣어주시면 될 것 같은데요.



    if adoquery1.Fields[2].Value = '0' then

    panel1.color := clblue;

    else

    panel1.color := clred;

  • Profile
    이우호 2001.05.15 03:01
    블랙봉 wrote:

    > 이우호 wrote:

    > > panel의 색깔을 바꾸려고 하려는데 잘 안돼네요..

    > > 테이블의 3번째 필드에서 데이타가 0이면 색깔을 빨간색으로 그 이외의 값은

    > > 파란색으로 panel의 색깔을 바꾸려고 합니다.

    > > 밑에는 제가 한 건데 안돼네여..

    > > 꼭 부탁드립니다.

    > >

    > > unit Unit1;

    > >

    > > interface

    > >

    > > uses

    > > Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    > > Db, ADODB, ExtCtrls, StdCtrls;

    > >

    > > type

    > > TForm1 = class(TForm)

    > > Panel1: TPanel;

    > > DataSource1: TDataSource;

    > > ADOQuery1: TADOQuery;

    > > Button1: TButton;

    > > procedure Button1Click(Sender: TObject);

    > >

    > > private

    > > { Private declarations }

    > > public

    > > procedure pump1;

    > > { Public declarations }

    > > end;

    > >

    > > var

    > > Form1: TForm1;

    > >

    > > implementation

    > >

    > > {$R *.DFM}

    > >

    > > procedure TForm1.pump1;

    > > var

    > > i : integer;

    > > begin

    > > adoquery1.First;

    > > for i := 1 to adoquery1.recordcount do

    > > begin

    > > if adoquery1.Fields[2].Value = '0' then

    > > begin

    > > panel1.color := clblue;

    > > end

    > > else

    > > panel1.color := clred;

    > > end;

    > > adoquery1.next;

    > > end;

    > >

    > > procedure TForm1.Button1Click(Sender: TObject);

    > > begin

    > > application.Terminate;

    > > end;

    > >

    > > end.

    > >

    >

    > 현재 선택된 레코드의 3번째 필드 값에 의해 패널의 색상을 바꾸실려고 그러시는 건가요?

    > 지금 현재 코딩을 보면 항상 맨 마지막 레코드의 값에 의해 색상이 결정되도록 되어 있는 것 같네요.

    > ADOQuery에도 AfterScroll 이벤트가 있는 것 같네요. 그 이벤트에서 색상 변경하는 루틴을 넣어주시면 될 것 같은데요.

    >

    > if adoquery1.Fields[2].Value = '0' then

    > panel1.color := clblue;

    > else

    > panel1.color := clred;



    우호 reply :

    제가 해보니까 첫번째 레코드에 의해서만 변경되고 다음 레코드에서 부터는 변화가 없어요.

  • Profile
    블랙봉 2001.05.15 19:11
    이우호 wrote:

    > 블랙봉 wrote:

    > > 이우호 wrote:

    > > > panel의 색깔을 바꾸려고 하려는데 잘 안돼네요..

    > > > 테이블의 3번째 필드에서 데이타가 0이면 색깔을 빨간색으로 그 이외의 값은

    > > > 파란색으로 panel의 색깔을 바꾸려고 합니다.

    > > > 밑에는 제가 한 건데 안돼네여..

    > > > 꼭 부탁드립니다.

    > > >

    > > > unit Unit1;

    > > >

    > > > interface

    > > >

    > > > uses

    > > > Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    > > > Db, ADODB, ExtCtrls, StdCtrls;

    > > >

    > > > type

    > > > TForm1 = class(TForm)

    > > > Panel1: TPanel;

    > > > DataSource1: TDataSource;

    > > > ADOQuery1: TADOQuery;

    > > > Button1: TButton;

    > > > procedure Button1Click(Sender: TObject);

    > > >

    > > > private

    > > > { Private declarations }

    > > > public

    > > > procedure pump1;

    > > > { Public declarations }

    > > > end;

    > > >

    > > > var

    > > > Form1: TForm1;

    > > >

    > > > implementation

    > > >

    > > > {$R *.DFM}

    > > >

    > > > procedure TForm1.pump1;

    > > > var

    > > > i : integer;

    > > > begin

    > > > adoquery1.First;

    > > > for i := 1 to adoquery1.recordcount do

    > > > begin

    > > > if adoquery1.Fields[2].Value = '0' then

    > > > begin

    > > > panel1.color := clblue;

    > > > end

    > > > else

    > > > panel1.color := clred;

    > > > end;

    > > > adoquery1.next;

    > > > end;

    > > >

    > > > procedure TForm1.Button1Click(Sender: TObject);

    > > > begin

    > > > application.Terminate;

    > > > end;

    > > >

    > > > end.

    > > >

    > >

    > > 현재 선택된 레코드의 3번째 필드 값에 의해 패널의 색상을 바꾸실려고 그러시는 건가요?

    > > 지금 현재 코딩을 보면 항상 맨 마지막 레코드의 값에 의해 색상이 결정되도록 되어 있는 것 같네요.

    > > ADOQuery에도 AfterScroll 이벤트가 있는 것 같네요. 그 이벤트에서 색상 변경하는 루틴을 넣어주시면 될 것 같은데요.

    > >

    > > if adoquery1.Fields[2].Value = '0' then

    > > panel1.color := clblue;

    > > else

    > > panel1.color := clred;

    >

    > 우호 reply :

    > 제가 해보니까 첫번째 레코드에 의해서만 변경되고 다음 레코드에서 부터는 변화가 없어요.



    음... 위에서 제가 말씀드린 대로 했는데도 안된다는 말씀인가요?

    이상하네요.... 제가 해보니까 AfterScroll에서 처리하면 되는데요...