Q&A

  • DBGrid에 어떻게 입력을 시켜야 할지?
1. ParamByName과 FieldByName의 차이점이 무엇인지요?



2. 폼에 성별(남,여:radiobutton) 체크가 있는데, DB는 Alpha로 2자리 만들었습니다.

근데, DBGrid에는 "남자", "여자"로 나타났으면 좋겠는데, 어떻게 하면 되는지요? 여러가지 방법이 있을텐데, 가장 좋은 방법 좀 알려주세요.



4  COMMENTS
  • Profile
    김영해 1999.04.17 08:00
    이슬 wrote:

    > 1. ParamByName과 FieldByName의 차이점이 무엇인지요?

    >

    > 2. 폼에 성별(남,여:radiobutton) 체크가 있는데, DB는 Alpha로 2자리 만들었습니다.

    > 근데, DBGrid에는 "남자", "여자"로 나타났으면 좋겠는데, 어떻게 하면 되는지요? 여러가지 방법이 있을텐데, 가장 좋은 방법 좀 알려주세요.

    >



    이런 방법도 있어요.

    Table 콤포넌트를 더블 클릭하여 필드 에디트를 열고

    원하는 필드의 이벤트 핸들러중에 GetText 라는게 있습니다.

    여기는 필드의 내용은 바꾸지 않고 디스플레이만 바꾸어 줍니다.



    procedure TForm1.Table1AGetText(Sender: TField; var Text: String;

    DisplayText: Boolean);

    begin

    IF SENDER.AsString = '1' THEN

    TEXT := '1이다'

    ELSE

    TEXT := '1아님';

    end;

    위와 같이 작성후 실행시켜보면 그리드에는 '1이다'라고 표시됩니다..

  • Profile
    신호성 1999.04.16 01:36
    > 2. 폼에 성별(남,여:radiobutton) 체크가 있는데, DB는 Alpha로 2자리 만들었습니다.

    > 근데, DBGrid에는 "남자", "여자"로 나타났으면 좋겠는데, 어떻게 하면 되는지요? 여러가지 방법이 있을텐데, 가장 좋은 방법 좀 알려주세요.

    >



    2번 질문에 대하여 ...

    Table에 Alpha2자리로 잡았다면 '남','여'로 기록했을테고

    이를 Select하여 Dbgrid로 보여줄때 '남자','여자'로 보고싶다는 질문이지요?



    해당Field(Column)를 'sex'라 가정하고



    방법1.

    Table을 Alpha 2자리로 하셨는데 가장좋은 방법은 Logical(Boolean형)으로

    잡는것 입니다.

    Table에 기록할때 True 또는 False로 기록하고 이경우 FieldsEditor에서

    Sex Field의 DisplayValues 프로퍼티에서 '남자;여자'(여;남)라고

    설정하면 True인경우 '남자'로 false인경우 '여자'로 표시됩니다.





    방법2.(Alpha 2자리로 유지할경우)

    Query1(Table도 같은방법) 컴포넌트를 사용한다고 가정하면



    먼저 FieldsEditor에서 New FIeld메뉴를 선택하여 새로운 Calculated Field를

    생성합니다.(Calculated Field명 :'c_sex', Type: String Size: 4)



    다음 Query1의 OnCalcFields 이벤트에서 다음과 같이 코딩합니다.



    procedure TForm1.Query1CalcFields(DataSet:TDataSet);

    begin

    with DataSet do

    begin

    if FieldByName('sex').AsString = '남' then

    FieldByName('c_sex').AsString := '남자'

    else

    FieldByName('c_sex').AsString := '여자';

    end;

    end;

























  • Profile
    박종모 1999.04.15 04:44
    이슬 wrote:

    > 1. ParamByName과 FieldByName의 차이점이 무엇인지요?

    >

    > 2. 폼에 성별(남,여:radiobutton) 체크가 있는데, DB는 Alpha로 2자리 만들었습니다.

    > 근데, DBGrid에는 "남자", "여자"로 나타났으면 좋겠는데, 어떻게 하면 되는지요? 여러가지 방법이 있을텐데, 가장 좋은 방법 좀 알려주세요.

    >



    델파이를 연구중인 초보 종모입니다.

    조금의 도움이 되었으면 좋겠습니다.



    ParamByName은 사용자가 임의로 설정한 Parameter를 지정한다.



    다음 예는 Test.DB의 D_Date필드에 Parameter를 사용하여

    날자값을 넣는 예이다.



    Query1.SQL.Clear;

    Query1.SQL.Add('Insert Into Test(D_Date) Values ( :P_Date )');

    Query1.ParamByName('P_Date').ASDateTime := StrToDate(Edit1.Text);

    Query1.ExecSQL;



    FieldByName은 실제로 존재하는 필드를 지정한다.

    한글은 한글자에 2Byte를 사용한다.

    (남자,여자)는 4Byte를 필요로 하므로 Alhpa 4Byte의 크기가 필요할까?



    라디오버튼 이름 : RA_MAN, RA_GIRL;



    // 버튼 클릭 이벤트

    procedure TForm1.Button1Click(Sender : TObject)

    begin

    if RA_MAN.Checked then

    Table1.FieldByName('Sex').AsString := '남자'

    else

    Table1.FieldByName('Sex').AsString := '여자'

    end;

  • Profile
    글쎄요 1999.04.15 05:41
    추가로 답변합니다.

    2번째 건데 답변이 잘 못된 것 같아요.

    가장 좋은 방법은 DBGRID 대신에 STRINGGRID를 쓰는 거죠.

    DBGRID의 DBGrid1DrawColumnCell 이벤트에 다음과 같이

    쓰시면 됩니다.

    'Sex'필드의 값이 'M'이면 남자

    아니면 여자임.

    if Column.Field = DM.MemberTable.FieldByName('Sex') then

    begin

    DBGrid1.Canvas.Font.Color := clBlack;

    DBGrid1.Canvas.FillRect(Rect);

    if Column.Field.AsString = 'M' then

    DBGrid1.Canvas.TextOut(Rect.Left+2,Rect.Top+1,'남자')

    else

    DBGrid1.Canvas.TextOut(Rect.Left+2,Rect.Top+1,'여자');

    end;

    이렇게 하시면 되지만 약간의 버그가 존재합니다. 한 번 해보시면 알

    것에요.^^ 그럼 즐거운 코딩하셔요.~~~

    • 이동화
    • 1999.04.15 08:56
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김영해
      1999.04.15 09:20
      이동화 wrote: > 안녕하세요! > 프린터에대해서 궁금한게 있습니다. 아니 지금 되지가 않습니다. > 프린...
    • 이동화
      1999.04.15 09:39
      김영해 wrote: > 이동화 wrote: > > 안녕하세요! > > 프린터에대해서 궁금한게 있습니다. 아니 지금 되...
    • 김영해
    • 1999.04.15 08:49
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.04.15 10:21
      아래 작업전환을 막는것이 있습니다. 이 코드는 나이렉스의 팁 게시판에서 가져왔습니다. var Form1:...
    • 김영해
      1999.04.17 07:48
      감사합니다.이정욱님 많은 도움이 되었습니다.
    • 이순희
    • 1999.04.15 08:34
    • 2 COMMENTS
    • /
    • 0 LIKES
    • bluepine
      1999.04.17 01:18
      이순희 wrote: > 안녕하세요... > 테이블에 시작시간과 끝시간에 대한 두개의 필드가 있습니다. > 두개...
    • 글쎄요.
      1999.04.15 19:02
      이순희 wrote: > 안녕하세요... > 테이블에 시작시간과 끝시간에 대한 두개의 필드가 있습니다. > 두개...
    • 이호선
    • 1999.04.15 05:08
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 전철호
      1999.04.20 03:56
      이호선 wrote: > 안녕하세요.. > 일반 control(예: Panel)에 이미지를 실을려하는데 > 어떻게해야 할지...
    • 안치봉
      1999.04.15 06:12
      이호선 wrote: > 안녕하세요.. > 일반 control(예: Panel)에 이미지를 실을려하는데 > 어떻게해야 할지...
    • 신인재
      1999.04.15 06:22
      안치봉 wrote: > 이호선 wrote: > > 안녕하세요.. > > 일반 control(예: Panel)에 이미지를 실을려하는...
    • 이슬
    • 1999.04.15 03:34
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 김영해
      1999.04.17 08:00
      이슬 wrote: > 1. ParamByName과 FieldByName의 차이점이 무엇인지요? > > 2. 폼에 성별(남,여:radiobu...
    • 신호성
      1999.04.16 01:36
      > 2. 폼에 성별(남,여:radiobutton) 체크가 있는데, DB는 Alpha로 2자리 만들었습니다. > 근데, DBGrid에...
    • 박종모
      1999.04.15 04:44
      이슬 wrote: > 1. ParamByName과 FieldByName의 차이점이 무엇인지요? > > 2. 폼에 성별(남,여:radiobu...
    • 글쎄요
      1999.04.15 05:41
      추가로 답변합니다. 2번째 건데 답변이 잘 못된 것 같아요. 가장 좋은 방법은 DBGRID 대신에 STRINGGRID...
    • 김정수
    • 1999.04.15 01:51
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.04.15 02:44
      김정수 wrote: > 음...mci관련 프로그램을 짜다가... 이런 메세지가 뜨더군요... > Could not create out...
    • Faster
    • 1999.04.15 01:40
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 아무개
      1999.04.15 04:49
      안녕하세요? 델파이 Q&A는 최소한 노력을 하는 사람들이 배워가는 곳입니다. 문제를 내고, 답을 맞추는 ...
    • 이정욱
      1999.04.15 01:49
      여러가지 방법이 있습니다. 각 콘트롤의 Tag를 사용하는 방법이 있구요.. 그냥 Name을 가지고 사용하는 ...
    • 이슬
    • 1999.04.14 23:40
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.04.14 23:58
      이슬님 저 구창민입니다. 메일 보내드렸는데 또 질문 올리셨군요. 못 받으셨다면 이글 다시 보시기 바래...
    • 보라뚱땡이
      1999.04.15 01:45
      이 사이트 자료실 54번 항목에 500개의 버튼이미지가 있는데요..... 그거말구 BitBtn에 사이즈상 Icon을...
    • 안치봉
      1999.04.14 21:18
      하재희 wrote: > 안녕하십니까! > 저는 현재 델파이로 프로젝트를 수행하고 있는 하재희라고 합니다. > ...
    • 이진수
    • 1999.04.14 19:46
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.04.14 21:01
      이진수 wrote: > microsoft Active Movie 2.0을 install 시키고 임의의 구간을 입력 > 받아서 재생하려고...
    • 이순희
    • 1999.04.14 06:08
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.04.14 19:39
      이순희 wrote: > 자꾸 질문해서 죄송합니다.. > 델파이를 많이 사용 안해봐서... 잘 모르는게 넘 많네요....
    • 이호선
    • 1999.04.14 05:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.04.14 07:50
      메뉴를 옆으로 나오게 하려면, 여러개의 팝업메뉴를 사용하시는 편이 좋습니다. 또한 그래픽을 넣으려면 ...
    • 문창완
    • 1999.04.14 05:28
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.04.14 07:48
      에러를 가로 챈다기 보다는 에러가 났을때 반응을 하게 하는것입니다. 하지만 프린터 캔버스를 이용해서 ...
    • 이진수
    • 1999.04.14 01:28
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.04.14 01:33
      에러안나고 잘 되는데요? 전 윈98에 델파이 4.0 (패치3)를 사용합니다. 이진수 wrote: > microsoft Ac...
    • 이진수
    • 1999.04.14 00:30
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.04.14 00:44
      음.. 제생각에는요... 아래의 ...... 안에서 무슨 문제가 있는것 같네요.. 레코드를 이동시켜버린다 던가...
    • 문창완
    • 1999.04.14 00:07
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.04.14 00:29
      문창완 wrote: > 프린터 출력시 진행율을 보여주고 싶습니다. > Printer Object 루프가 아닌 프린터 시그...
    • 이상돈
      1999.04.14 01:21
      델파이 디렉토리(sourcertlwin)에'winspool.pas'가 있는데 이건 어떤내용인지요..? 이걸 이용하면 안되는...
    • 안치봉
      1999.04.14 01:35
      이상돈 wrote: > 델파이 디렉토리(sourcertlwin)에'winspool.pas'가 있는데 > 이건 어떤내용인지요..? >...
    • 문창완
      1999.04.14 05:26
      안치봉 wrote: > 이상돈 wrote: > > 델파이 디렉토리(sourcertlwin)에'winspool.pas'가 있는데 > > 이건...