Q&A

  • 소스좀 봐줘여..
procedure Tdata.ok1Click(Sender: TObject);

var i : integer;

begin

for i:=0 to self.ComponentCount-1 do

begin

if (self.Components[i]) is TDBEdit and

((self.Components[i] as TDBEdit).Tag=1) then

begin

if Length((self.Components[i] as TDBEdit).Text)<=0 then

begin

showmessage('입력되지않은곳이 있습니다');

(self.Components[i] as TDBEdit).SetFocus;

Exit;

end

else main.lotno_sh.Text:=lotno.Text+'-'+lotse.Text;

end;

if (self.Components[i]) is TDBCombobox and

((self.Components[i] as TDBCombobox).Tag=1) then

begin

if Length((self.Components[i] as TDBCombobox).Text)<=0 then

begin

showmessage('입력되지않은곳이 있습니다');

(self.Components[i] as TDBCombobox).SetFocus;

Exit;

end

else

begin

main.devicesel_sh.Text:=devicesel.Text;

main.interval_sh.Text:=interval.Text;

main. chips_sh.Text:=chips.Text;

main.machine_sh.Text:=machine.Text;

close;

end;

machinetbl.Append;

machinetbl.FieldByName('Lot_num').asstring:=lotno.Text;

machinetbl.FieldByName('Device').asstring:=devicesel.Text;

machinetbl.FieldByName('Lot_serial').asstring:=lotse.Text;

machinetbl.FieldByName('Chipsize').asstring:=chips.Text;

machinetbl.FieldByName('검사수준').asstring:=interval.Text;

machinetbl.FieldByName('장비번호').asstring:=machine.Text;

machinetbl.Post;

end;

end;

{ with data.FindComponent('check_group') as TDBCheckbox do

for i := 0 to self.ComponentCount-1 do

begin

if self.ComponentCount<1 then begin

showmessage('no input');

(self.Components[i] as TDBCheckbox).SetFocus;

end;

end; }

//위에껀 체크박스가 다섯개가 있는데..이중 한개이상은 꼭 체크해야되여..

//근데 어떻게 해줘야될지 몰라서 그냥 놔둔거구여...

if machine.text='A' then begin

main.ma_abtn.caption:='A On';

end;

end;



실행을 시키면 다 입력해줬는데두 입력되지않은곳이 있다는 메세지가 계속 떠서여..

어디가 잘못된건지..좀봐줘여..

4  COMMENTS
  • Profile
    하얀까마귀 2000.06.13 23:32
    안녕하세요 하얀까마귀 입니다..



    소스에서는 tag가 1인 에디트와 콤보는 다 첵크하게 되어 있는데...



    메세지가 보인다음.. 에러난 곳으로 이동 하지 않아요???



    그 이동하는걸 보시면 될것 같은데..음.. 잘 모르겠다...



    그리고 그룹으로 묶여 있는 첵크박스5개.. 그냥 if문 쓰면 되죠...



    첵크박스 이름이 chBox1..5라면



    if not (chBox1.Checked and chBox2.Checked and chBox3.Checked ....

    chBox5.Checked ) then

    begin

    showmessage('야 하나 찍어.. ');

    chBox1.SetFocus;

    Exit;

    end;



    소스는 괜찮은것 같네요... 아!! 그리고 tag는 안해도 되는데... 보통 검사할 에디트와



    하지 말아야할 에디트가 있어서.. 그렇게 한겁니다...



    음. 메일은 받았는데.. 제가좀 늦게 봐서.. 답장은 안했어요.. 죄송..



    아직 해결 못하셨을줄 알았으면 보낼걸 그랬네요...



    그럼.. 즐거운시간 되세요..



    - 하얀까마귀 -



    heimdal wrote:

    > procedure Tdata.ok1Click(Sender: TObject);

    > var i : integer;

    > begin

    > for i:=0 to self.ComponentCount-1 do

    > begin

    > if (self.Components[i]) is TDBEdit and

    > ((self.Components[i] as TDBEdit).Tag=1) then

    > begin

    > if Length((self.Components[i] as TDBEdit).Text)<=0 then

    > begin

    > showmessage('입력되지않은곳이 있습니다');

    > (self.Components[i] as TDBEdit).SetFocus;

    > Exit;

    > end

    > else main.lotno_sh.Text:=lotno.Text+'-'+lotse.Text;

    > end;

    > if (self.Components[i]) is TDBCombobox and

    > ((self.Components[i] as TDBCombobox).Tag=1) then

    > begin

    > if Length((self.Components[i] as TDBCombobox).Text)<=0 then

    > begin

    > showmessage('입력되지않은곳이 있습니다');

    > (self.Components[i] as TDBCombobox).SetFocus;

    > Exit;

    > end

    > else

    > begin

    > main.devicesel_sh.Text:=devicesel.Text;

    > main.interval_sh.Text:=interval.Text;

    > main. chips_sh.Text:=chips.Text;

    > main.machine_sh.Text:=machine.Text;

    > close;

    > end;

    > machinetbl.Append;

    > machinetbl.FieldByName('Lot_num').asstring:=lotno.Text;

    > machinetbl.FieldByName('Device').asstring:=devicesel.Text;

    > machinetbl.FieldByName('Lot_serial').asstring:=lotse.Text;

    > machinetbl.FieldByName('Chipsize').asstring:=chips.Text;

    > machinetbl.FieldByName('검사수준').asstring:=interval.Text;

    > machinetbl.FieldByName('장비번호').asstring:=machine.Text;

    > machinetbl.Post;

    > end;

    > end;

    > { with data.FindComponent('check_group') as TDBCheckbox do

    > for i := 0 to self.ComponentCount-1 do

    > begin

    > if self.ComponentCount<1 then begin

    > showmessage('no input');

    > (self.Components[i] as TDBCheckbox).SetFocus;

    > end;

    > end; }

    > //위에껀 체크박스가 다섯개가 있는데..이중 한개이상은 꼭 체크해야되여..

    > //근데 어떻게 해줘야될지 몰라서 그냥 놔둔거구여...

    > if machine.text='A' then begin

    > main.ma_abtn.caption:='A On';

    > end;

    > end;

    >

    > 실행을 시키면 다 입력해줬는데두 입력되지않은곳이 있다는 메세지가 계속 떠서여..

    > 어디가 잘못된건지..좀봐줘여..

  • Profile
    heimdal 2000.06.14 00:36
    하얀까마귀 wrote:

    > 안녕하세요 하얀까마귀 입니다..

    >

    > 소스에서는 tag가 1인 에디트와 콤보는 다 첵크하게 되어 있는데...

    >

    > 메세지가 보인다음.. 에러난 곳으로 이동 하지 않아요???

    >

    > 그 이동하는걸 보시면 될것 같은데..음.. 잘 모르겠다...

    >

    > 그리고 그룹으로 묶여 있는 첵크박스5개.. 그냥 if문 쓰면 되죠...

    >

    > 첵크박스 이름이 chBox1..5라면

    >

    > if not (chBox1.Checked and chBox2.Checked and chBox3.Checked ....

    > chBox5.Checked ) then

    > begin

    > showmessage('야 하나 찍어.. ');

    > chBox1.SetFocus;

    > Exit;

    > end;

    >



    if not(po_check.Checked and color_check.Checked and vr_check.Checked

    and vf_check.Checked and thy_check.Checked) then

    begin

    showmessage('야 하나 찍어.. ');

    po_check.SetFocus;

    Exit;

    end

    else exit;

    요렇게 했습니다..

    이것의 위치는 for문이 끝난다음에 넣어거든여..?

    음..근데여..

    위와같이 if문을 써서 해
  • Profile
    하얀까마귀 2000.06.14 08:37
    안녕하세요 하얀까마귀 입니다..



    허거걱...



    죄송... if not ( .. and .. and... ) then



    이 아니라.. or 입니다. 지송.. 이런 한심한....



    그럴수도 있지 하고.. 너그러이 용서를 해 주시길..



    그리고 반 투명하게 되는건 아마 dbCheckbox를사용하신것 같은데...



    이럴경우 디비에 값이 없는경우 null인경우나 맞지 않는경우에 발생합니다..



    초기값을 주면 생기지 않습니다..



    그럼.. 다시한번 죄송합니다..



    즐거운시간 되세요..



    - 하얀까마귀 -



    heimdal wrote:

    > 하얀까마귀 wrote:

    > > 안녕하세요 하얀까마귀 입니다..

    > >

    > > 소스에서는 tag가 1인 에디트와 콤보는 다 첵크하게 되어 있는데...

    > >

    > > 메세지가 보인다음.. 에러난 곳으로 이동 하지 않아요???

    > >

    > > 그 이동하는걸 보시면 될것 같은데..음.. 잘 모르겠다...

    > >

    > > 그리고 그룹으로 묶여 있는 첵크박스5개.. 그냥 if문 쓰면 되죠...

    > >

    > > 첵크박스 이름이 chBox1..5라면

    > >

    > > if not (chBox1.Checked and chBox2.Checked and chBox3.Checked ....

    > > chBox5.Checked ) then

    > > begin

    > > showmessage('야 하나 찍어.. ');

    > > chBox1.SetFocus;

    > > Exit;

    > > end;

    > >

    >

    > if not(po_check.Checked and color_check.Checked and vr_check.Checked

    > and vf_check.Checked and thy_check.Checked) then

    > begin

    > showmessage('야 하나 찍어.. ');

    > po_check.SetFocus;

    > Exit;

    > end

    > else exit;

    > 요렇게 했습니다..

    > 이것의 위치는 for문이 끝난다음에 넣어거든여..?

    > 음..근데여..

    > 위와같이 if문을 써서 해
  • Profile
    서경환 2000.06.13 23:16
    소스를 봐서는 모르겠고

    디버깅을 하죠

    먼저 입력되지 않은것이 TDBEdit인지 아님 TDBCombobox인지

    확인을 하고

    메세지를 보여주기전에 i값을 읽어오면

    어떤것인지 알 수 있지 않을까요.

    어디에 하나 숨겨 놓은거 아니에요. 그런 실수를 한적이 있어서...

    수곱...

    heimdal wrote:

    > procedure Tdata.ok1Click(Sender: TObject);

    > var i : integer;

    > begin

    > for i:=0 to self.ComponentCount-1 do

    > begin

    > if (self.Components[i]) is TDBEdit and

    > ((self.Components[i] as TDBEdit).Tag=1) then

    > begin

    > if Length((self.Components[i] as TDBEdit).Text)<=0 then

    > begin

    > showmessage('입력되지않은곳이 있습니다');

    > (self.Components[i] as TDBEdit).SetFocus;

    > Exit;

    > end

    > else main.lotno_sh.Text:=lotno.Text+'-'+lotse.Text;

    > end;

    > if (self.Components[i]) is TDBCombobox and

    > ((self.Components[i] as TDBCombobox).Tag=1) then

    > begin

    > if Length((self.Components[i] as TDBCombobox).Text)<=0 then

    > begin

    > showmessage('입력되지않은곳이 있습니다');

    > (self.Components[i] as TDBCombobox).SetFocus;

    > Exit;

    > end

    > else

    > begin

    > main.devicesel_sh.Text:=devicesel.Text;

    > main.interval_sh.Text:=interval.Text;

    > main. chips_sh.Text:=chips.Text;

    > main.machine_sh.Text:=machine.Text;

    > close;

    > end;

    > machinetbl.Append;

    > machinetbl.FieldByName('Lot_num').asstring:=lotno.Text;

    > machinetbl.FieldByName('Device').asstring:=devicesel.Text;

    > machinetbl.FieldByName('Lot_serial').asstring:=lotse.Text;

    > machinetbl.FieldByName('Chipsize').asstring:=chips.Text;

    > machinetbl.FieldByName('검사수준').asstring:=interval.Text;

    > machinetbl.FieldByName('장비번호').asstring:=machine.Text;

    > machinetbl.Post;

    > end;

    > end;

    > { with data.FindComponent('check_group') as TDBCheckbox do

    > for i := 0 to self.ComponentCount-1 do

    > begin

    > if self.ComponentCount<1 then begin

    > showmessage('no input');

    > (self.Components[i] as TDBCheckbox).SetFocus;

    > end;

    > end; }

    > //위에껀 체크박스가 다섯개가 있는데..이중 한개이상은 꼭 체크해야되여..

    > //근데 어떻게 해줘야될지 몰라서 그냥 놔둔거구여...

    > if machine.text='A' then begin

    > main.ma_abtn.caption:='A On';

    > end;

    > end;

    >

    > 실행을 시키면 다 입력해줬는데두 입력되지않은곳이 있다는 메세지가 계속 떠서여..

    > 어디가 잘못된건지..좀봐줘여..