Q&A

  • 콤보박스 items에 값 넣기에서...
안녕하세요.. 이번에 처음 델파이를 접하게 되었습니다..
현재 mysql5.0버전과 zeos 6.6.2 버전을 이용해서 연동을 하고 있는데요..

일반 콤보박스에 처음부터 items안에 정해진 값을 넣는게 아니라
db의 한 테이블에서 검색해서 그 값을 넣고 선택하고 싶습니다..

질답에서 combobox라고 검색해서 찾아서 전부 봤는데
제가 이해를 잘 못하는것 같아 부득이하게 올리게 되었습니다..
중복 질문이 될지 모르겠지만 이해해 주시길...ㅠㅠ


콤보박스를 누르면 쿼리를 db에 보내고 원하는 결과를 받아와서 콤보박에서 뿌려주고 싶습니다..


procedure Tform_ClassLess.ComboBox6Click(Sender: TObject);
var
   aaaa : string;
begin
     if ConneDMs.zcconn.Connected = False then begin
          ConneDMs.zcconn.Connect;
     end;
     ConneDMs.ZQuery1.SQL.Text := 'select LESNAME, LESNO FROM LESSON_INFO';
     ConneDMs.ZQuery1.Open;
     aaaa := ConneDMs.ZQuery1.FieldValues['LESNAME'];
     ShowMessage(aaaa);
     ComboBox6.Items.Values[aaaa];
     ConneDMs.ZQuery1.Close;
     ConneDMs.ZQuery1.Free;

end;


제가 작성한 부분인데요...
뭘 잘못한건지 실행시켜보면 아무값도 안나오네요..

뒤쪽에서 찾아보니 지역변수랑 머 그런이야기도 있던거 같던데 .. 그런 문제도 있는건가요?
그럼

var
   aaaa : string;

를 위로 올려야 하는건가요..??? ;;;;



제가 심하게 초보라 궁금한게 좀 많습니다.. 검색 실력이 딸리는지 원하는 검색 결과를 잘 못찾아 질문드립니다;

검색을 하게되면 하나이상의 값이 aaaa에 들어가게 되는데(혹시 이것도 그냥 하나만 들어가고 없어지나요;;;)....
배열 형태가 되게되면 items에 넣을때 aaaa 배열의 길이만큼 돌면서 콤보박스에 값을 넣어야 하잖아요..
배열 길이 구하는 방법도 좀 알려주시면 감사하겠습니다..(_ _)

위에서 두개를 받아왔을때.. 표시는 LESNAME(varchar형)만 콤보박스에 표시하고, LESNO(int형)는 가지고 있고싶은데 이건 어떻게 하는건지요...
검색해보니 몇가지 방법 적어주셨던데 도통 먼 말인지 이해 못하고 있습니다..
(무식하면 죕니다..ㅠㅠ 책도 있는데 설명이 거의 없네요;;;;)


귀찮으시겠지만. 자세히 설명해주시면 감사하겠습니다..

위 소스 머가 틀려서 안되는지도 알려주시면... 너무 감사드리겠습니다...



p.s. 혹시 내장함수들 정리된 팁은 없나요? 문자열 변환관련 함수랑 등등..
string을 tstring으로 변환하는건 가능한가요? (int랑 str은 되는건 봤는데.. ;; ) 이런거 잘 된 사이트 있음 소개좀 부탁드려요..;;
5  COMMENTS
  • Profile
    dbwrite 2008.05.30 05:28
    combobox item인가 거기에다 값넣으시고(문자) list 콤포넌트 써서 (코드) 입력후 combo선택시 index가져와서 list콤포넌트 에서 찾으면되는데
    귀찮아서... 그냥 combobox 이용하여 입력여러개 받을수 있는 콤포넌트 만드시는게 편할듯 하군요..
  • Profile
    이정욱 2008.05.30 08:08
    items.values 에 넣지 마시고...
    items.clear; 하신후, items.add 하세요.
    또는 그냥 items.text 에다가 집어 넣으셔도 됩니다.
  • Profile
    공성환 2008.05.30 19:34
    아래코드 참조하시면 도움될까요?
    <!--CodeS-->
    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    StdCtrls;

    type
    TForm1 = class(TForm)
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    Button1: TButton;
    Button2: TButton;
    ComboBox3: TComboBox;
    Button3: TButton;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.DFM}

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Combobox1.Items.Clear;

    Combobox1.Items.AddObject('aaa', TObject(1));
    Combobox1.Items.AddObject('bbb', TObject(2));
    Combobox1.Items.AddObject('ccc', TObject(3));
    Combobox1.Items.AddObject('ddd', TObject(4));

    Combobox2.Items.Clear;
    Combobox2.Items.AddObject('AAA', TObject(LongInt(NewStr('A'))));
    Combobox2.Items.AddObject('BBB', TObject(LongInt(NewStr('B'))));
    Combobox2.Items.AddObject('CCC', TObject(LongInt(NewStr('C'))));
    Combobox2.Items.AddObject('DDD', TObject(LongInt(NewStr('D'))));
    end;

    procedure TForm1.Button2Click(Sender: TObject);
    var
    buffer1,buffer2 : String;
    begin
    buffer1 := IntToStr(LongInt(Combobox1.Items.Objects[Combobox1.ItemIndex]));
    buffer2 := PString(Combobox2.Items.Objects[combobox2.ItemIndex])^;

    ShowMessage(buffer1 + ' ' + buffer2);
    end;

    procedure TForm1.FormDestroy(Sender: TObject);
    var
    i : Integer;
    begin
    for i := 0 to ComboBox2.Items.Count-1 do
    DisposeStr(PString(ComboBox2.Items.Objects[i]));
    end;

    procedure TForm1.Button3Click(Sender: TObject);
    begin
    Combobox3.Items.Clear;
    Combobox3.Style := csDropDownList;
    Combobox3.Items.Add('aaa' + ' ' + ':코드1');
    Combobox3.Items.Add('bbb' + ' ' + ':코드2');
    Combobox3.Items.Add('ccc' + ' ' + ':코드3');
    Combobox3.Items.Add('ddd' + ' ' + ':코드4');
    end;

    procedure TForm1.Button4Click(Sender: TObject);
    var
    i : Integer;
    code,name : String;
    begin
    code := Trim(Copy(Combobox3.Text,1,Pos(':',ComboBox3.Text)-1));
    name := Copy(Combobox3.Text,Pos(':',ComboBox3.Text)+1,Length(ComboBox3.Text));
    ShowMessage(code + #13 + name);
    end;

    end.

    <!--CodeE-->
  • Profile
    공성환 2008.05.30 19:38
    콤보박스가 디비룩업콤보처럼 코드,명을 같이 쓸수가 없을거예요...
    저도 콤보3처럼 사용많이 했어여... 좀 후잡하지만 저게 편한것 같아서...


  • Profile
    화이팅 2008.05.31 03:00
    아..
    다들 정말 감사합니다.
    이제 조금씩 이해 되는거 같아요... 정말 답답했는데..
    너무 감사합니다^^
    • 김상진
    • 2008.06.04 21:57
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.06.04 22:59
      MySQL_Front 의 버전이 설치하신 MySQL 서버와 호환이 안되는 경우 같습니다.
    • 석주현
      2008.06.04 23:33
      위의 문제점을 해결하기 위해서는 <!--CodeS--> 1. 모든 Client 프로그램을 4.1이상으로 업그...
    • 이정욱
      2008.06.04 21:19
      코드싸인은 델파이나, C++ 이나 VB나... 기타 등등의 EXE나 DLL을 뱉어내는 개발툴에서 모두 같습니다. ...
    • 이정욱
      2008.06.04 10:02
      흠.. 저는 되었던 것 같습니다. 저도 ExpressBarSuite를 사용했는데, 저번에 진행했던 프로젝트가 MDI...
    • 루단스
      2008.06.04 18:03
      ㅎㅎ 감사합니다. 되는군요. 역시 제가 잘 못 사용했네요. 웰케 바보스러운쥐...ㅜ.ㅜ DockSite의 Au...
    • 이정욱
      2008.06.04 23:03
      델파이 2007 기준입니다. Component 메뉴에서, Import Library -> Import ActiveX Control -> 그리고....
    • 홍성락
    • 2008.06.04 02:42
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.06.04 23:04
      헉.. 답변 하셨었네요 ㅋ 가능하면 코멘트로 달아주세요 ^^; 발급되는 포인트는 같습니다 ^^
    • 홍성락
      2008.06.05 00:17
      예 알겠습니다. 코멘트가 보는거나 검색에 용이하지요. 첨부자료가 없으면 애용하겠습니다. *잠깐 붙임...
    • 석주현
      2008.06.04 00:21
      <!--CodeS--> cbbTest.Items.NameValueSeparator := ':'; cbbTest.Items.Values['00'] := '...
    • 공성환
      2008.06.04 02:53
      cbbTest.Items.NameValueSeparator 요넘이 델버젼 몇부터인가요? 작년까지 델3 올해 델4쓰고있어여 ㅠ...
    • 석주현
      2008.06.04 10:18
      아 그러시군요. 음 전 요즘 7.0을 쓰고 있습니다. 몇년 전까지 5.0을 썼었고요.. 아 하위 버젼에 ...
    • 공성환
      2008.06.04 19:42
      델4는 다덜 별루라고 하고... 델5는 쓸만하다고 하는데... 도대체 난 언제쯤 상위버젼 써불수 있을까... ...
    • phono
      2008.06.04 20:18
      또 다른 방법은 조금 고통스런 노가다 필요하지만.. for i:=0 to ComboBox1.ComboBox1.items.Cou...
    • 이정욱
      2008.06.02 22:14
      공장 자동화 쪽으로는 거의 델파이가 독보적(?) 이라고 할 수 있을 정도로 점유율이 높습니다. 제 생...
    • 이성훈
      2008.06.02 22:32
      음...일단 회사에서 쓰는 주력언어을 먼저 배우시는게 좋지 않을까요? 어차피 회사에서도 재활용이 용...
    • phono
      2008.06.04 01:59
      공장자동화 FA 라면 당근 델파이 강추 합니다. 델파이는 초기 버전때 부터 한솔제지등 굵직굵직한 프로...
    • 공호준
      2008.06.04 18:23
      동감합니다. 속도면에 VB보다 좋더군요(아주). http://fadelphikorea.com/ 사이트을 활용하시면 될것 같...
    • 화이팅
    • 2008.06.02 19:40
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.06.02 22:05
      ModalResult에 값이 설정되면 모달창은 닫히게 됩니다. 이게 모달의 특성이죠... bbt_Login버튼에 Modal...
    • 이정욱
      2008.06.02 22:08
      몇가지 방법이 있습니다. 일단 암호가 틀렸을 경우 로그인 폼의 ModalResult 를 안주면 괜찬습니다. ...
    • 이정욱
      2008.06.02 22:09
      헛... 최용일님께서 동일한 답변을 같은시간에 ㅋ ㅎㅎ 그래도 지우지 않으렵니다 ㅋㅋ
    • 화이팅
      2008.06.03 04:15
      감사합니다~ 이해하기 쉽게.. ^^ 많은 도움 되었습니다
    • 공성환
      2008.06.02 18:20
      SELECT* FROM PROF_LEVEL ORDER BY LEVNAME 요기에서 SELECT* 요넘이 붙어있는것 같은데요... 이거 아...
    • 화이팅
      2008.06.02 19:51
      SELECT * 을 띄웠는데도 문제가 생기네요.. SQL 쿼리에 값이 없다고 합니다.. 첨부파일 올릴테니 아시...
    • 공성환
      2008.06.02 20:22
      db커넥션 하는곳에서 잘못된거 아닌가요? 디자인모드에서 쿼리콤포넌트에 위에 쿼리 넣어주시고 active ...
    • 화이팅
      2008.06.02 20:40
      아... 고쳐졌습니다~ 순서가 바뀌니 에러나 뜨네요.. ZZOM2님 너무 감사합니다^^
    • 권용민
    • 2008.06.01 21:48
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 석주현
      2008.06.02 16:21
      음 마우스로 그린다는 게 특정 Satate 에서 마우스 왼쪽 버튼 클릭 메시지 처리와 마우스 무브 메시지 처...
    • 신철우
    • 2008.06.01 01:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.06.01 06:33
      초기화를 해서 할수도 있지만 이런 방법도 있습니다. type DirectoryType = (_WINDOWS, _TEMP, _...
    • 박세철
    • 2008.05.31 19:24
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 신민철
    • 2008.05.31 10:18
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 공성환
      2008.05.31 18:46
      쿼리를 작성시 ORDER BY 해서 추출해서 추가시키면 되는거 아닌가요? 쿼리가 여러개라면 우선 추출된...
    • 구창민
      2008.05.30 21:30
      안녕하세요.. DB에서 값을 가져올때 총건수를 확인해 보세요... 그후, 그리드의 RowCount 를 총건수에 ...
    • 홍성락
      2008.05.30 21:59
      위의 소스를 보면 데이타배열(lv_ID,lv_NM)은 i가 0에서 시작되고 Cells은 i는 1에서 시작되네요. for문...
    • 천천히
    • 2008.05.30 22:05
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 화이팅
    • 2008.05.30 03:51
    • 5 COMMENTS
    • /
    • 0 LIKES
    • dbwrite
      2008.05.30 05:28
      combobox item인가 거기에다 값넣으시고(문자) list 콤포넌트 써서 (코드) 입력후 combo선택시 index가져...
    • 이정욱
      2008.05.30 08:08
      items.values 에 넣지 마시고... items.clear; 하신후, items.add 하세요. 또는 그냥 items.text 에다...
    • 공성환
      2008.05.30 19:34
      아래코드 참조하시면 도움될까요? <!--CodeS--> unit Unit1; interface uses Windows, ...
    • 공성환
      2008.05.30 19:38
      콤보박스가 디비룩업콤보처럼 코드,명을 같이 쓸수가 없을거예요... 저도 콤보3처럼 사용많이 했어여.....
    • 화이팅
      2008.05.31 03:00
      아.. 다들 정말 감사합니다. 이제 조금씩 이해 되는거 같아요... 정말 답답했는데.. 너무 감사합니다^^
    • 양선호
    • 2008.05.30 02:31
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.05.30 20:43
      New -> Packages 로 패키지를 하나 만듭니다. 그리고 그 패키지 파일에 컴포넌트 파일을 추가 합니다....
    • 이정욱
      2008.05.30 23:15
      컴파일 속도는.. 빠를텐데요.. 2006 이라고 해서 컴파일속도가 느려지진 않았습니다. 컴파일 옵션중에...
    • 이은주
      2008.09.01 18:35
      저도 2007 을 사용하고 있는데 에전에 7 쓸때와 비교하면 거의 5 배 이상 늦군요. warning 을 제거하면 ...
    • 홍성락
      2008.05.30 02:30
      모두 지우는건 Image2.Canvas.FillRect(Image2.Canvas.ClipRect); 이렇게 하시되 Image2.Canvas.Brush의 ...
    • 임정미
      2008.05.31 10:01
      감사합니다. image1,image2의 Stretch 속성을 모두 false로 바꾸고 했더니 말씀대로 좌표는 같게 나...
    • 홍성락
      2008.06.01 06:50
      아~예. 해결되었다니 다행입니다, 마지막 말한게 혼돈되시나보네요. 뭐든 방법은 여러가지로 해결할 수 ...