Q&A

  • 한 콤보박스의 내용이 바뀔 때 다른 콤보박스도 따라 바뀌게 하려면?
procedure Tfrmmas001.s_mediam_gubunChange(Sender: TObject);

var

c_gubun : string;

begin

s_mediam_name.Clear;

if s_mediam_gubun.ItemIndex < 0 then

Exit;

c_gubun := copy(s_mediam_gubun.text,1,2);

with t_q do

begin

while not eof do

begin

if c_gubun = (copy(string_name.Text ,1,2)) then

s_mediam_name.Items.Add('string_gubun[1]');

end;

end;

end;



procedure Tfrmmas001.FormCreate(Sender: TObject);

begin

try

t_q.Open;

string_gubun := TStringList.Create; // 메체구분

string_name := TStringList.Create; // 메체명

with t_q do

begin

first;

while Not Eof do

begin

string_gubun.Add(Trim(fields[2].AsString));

string_name.Add(Trim(fields[8].AsString));

Next;

end;

first;

mas_message.text := string_gubun[0];

end;

except

showmessage('코드정보 읽기에러');

end;

end;



procedure Tfrmmas001.C_mediam_gubunClick(Sender: TObject);

begin

with t_q do

begin

first;

while not eof do

begin

s_mediam_gubun.Items.Add(string_gubun[0]) ;

next;

end;

first;

end;

end;

이것은 s_mediam_gubun(콤보박스)의 내용이 바뀔때 s_mediam_name(콤보박스)의 내용이 바뀌게할려는 program입다..

군데 이상한값만 나오고 내가원하는 값은 안나오는군여..

알켜주세여

1  COMMENTS
  • Profile
    남기석 2000.11.11 11:00
    안녕하세요

    청개구리 남기석( http://www.delphitravel.com )입니다.



    소스를 보니까....

    테이블에서 구분코드와 이름을 가져와서 코드가 입력되어 있는 콤보가 변경되면

    옆에 있는 콤보에 해당 이름을 보여주는 것 같군요?

    맞나요?



    맞다면 이런 방법을 사용해보세요...

    StringList 에 코드와 이름을 Add하지 마시고...

    2개의 콤보박에 직접 Add해 주시고...( 같은 인덱스에다가 )

    코드 콤보박스의 인덱스가 변경되면 이름 콤보박스의 인덱스를

    변경해 주면됩니다.



    간단히 예를 들어볼께요...



    procedure Tfrmmas001.FormCreate(Sender: TObject);

    begin

    try

    t_q.Open;

    t_q.first;

    with t_q do

    begin

    while Not Eof do

    begin

    s_mediam_gubun.Items.Add( Trim(fields[2].AsString) ); //코드콤보

    s_mediam_name.Items.Add( Trim(fields[8].AsString) ); //이름콤보

    Next;

    end;

    end;

    s_mediam_gubun.itemindex := 0; // 코드 콤보를 첫번째 값으로...

    s_mediam_name.ItemIndex := 0; // 이름 콤보를 첫번째 값으로...

    except

    showmessage('코드정보 읽기에러');

    end;

    end;



    procedure Tfrmmas001.s_mediam_gubunChange(Sender: TObject);

    begin

    // 구분콤보가 바뀌면 이름콤보의 인덱스를 구분콤보의 인덱스로

    s_mediam_name.ItemIndex := s_mediam_gubun.itemindex;

    end;



    procedure Tfrmmas001.s_mediam_nameChange(Sender: TObject);

    begin

    // 이름콤보가 바뀌면 구분콤보의 인덱스를 이름콤보의 인덱스로

    s_mediam_gubun.itemindex := s_mediam_name.ItemIndex;

    end;



    행복하세요..

    =============================================================================



    김지수 wrote:

    > procedure Tfrmmas001.s_mediam_gubunChange(Sender: TObject);

    > var

    > c_gubun : string;

    > begin

    > s_mediam_name.Clear;

    > if s_mediam_gubun.ItemIndex < 0 then

    > Exit;

    > c_gubun := copy(s_mediam_gubun.text,1,2);

    > with t_q do

    > begin

    > while not eof do

    > begin

    > if c_gubun = (copy(string_name.Text ,1,2)) then

    > s_mediam_name.Items.Add('string_gubun[1]');

    > end;

    > end;

    > end;

    >

    > procedure Tfrmmas001.FormCreate(Sender: TObject);

    > begin

    > try

    > t_q.Open;

    > string_gubun := TStringList.Create; // 메체구분

    > string_name := TStringList.Create; // 메체명

    > with t_q do

    > begin

    > first;

    > while Not Eof do

    > begin

    > string_gubun.Add(Trim(fields[2].AsString));

    > string_name.Add(Trim(fields[8].AsString));

    > Next;

    > end;

    > first;

    > mas_message.text := string_gubun[0];

    > end;

    > except

    > showmessage('코드정보 읽기에러');

    > end;

    > end;

    >

    > procedure Tfrmmas001.C_mediam_gubunClick(Sender: TObject);

    > begin

    > with t_q do

    > begin

    > first;

    > while not eof do

    > begin

    > s_mediam_gubun.Items.Add(string_gubun[0]) ;

    > next;

    > end;

    > first;

    > end;

    > end;

    > 이것은 s_mediam_gubun(콤보박스)의 내용이 바뀔때 s_mediam_name(콤보박스)의 내용이 바뀌게할려는 program입다..

    > 군데 이상한값만 나오고 내가원하는 값은 안나오는군여..

    > 알켜주세여