Q&A

  • 성호정님, 김동섭님 그리드위에 콤보박스올리는 법 좀..
안녕하십니까? 델파이로 열씸이 하는데 디비그리드 안에 디비콤보를 넣는데서 며칠째 진행이 안되고 있습니다.



구체적으로 그리드에서 한 컬럼에 입력된 값에 따라 다른 컬럼에서 콤보박스를 이용해 종류별로 lookup해주는 것을 해결할려고 하는데..

일단 해당그리드에 클릭하거나 keydown을 하면 DB콤보박스가 떠야 하는데 도대체 안되고 있습니다.



아래와 같이 1), 2) 도 각각 안되거니와 물론 처음부터 1), 2)없는 상태에서도 안되고 있습니다.

무엇이 문제인지.. 혹 다른 것을 설정해야 하는지..

답변 꼭 좀 부탁드립니다.



procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer;

Column: TColumn; State: TGridDrawState);

begin if(gdFocused in State) then

begin

if DBGrid1.SelectedField.fieldName = 'BOOKITEM' then

// if (Column.FieldName = DBComboBox1.DataField ) then

// if DBGrid1.Column.FieldName = 'BOOKITEM' then

begin

Label1.visible := true;

DBComboBox1.Left := Rect.Left + DBGrid1.Left;

DBComboBox1.Top := Rect.Top + DBGrid1.Top;

DBComboBox1.Width := Rect.Right - Rect.Left;

// DBComboBox1.Height := Rect.Bottom - Rect.Top;

// DBComboBox1.visible := true;

// DBComboBox1.SetFocus;

end

else

Label1.visible := false;

DBComboBox1.visible := false;

end;

end;



1) procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin if key = vk_f4 then

if DBGrid1.SelectedField.FieldName = 'BOOKITEM' then

begin

DBComboBox1.visible := true;

DBComboBox1.SetFocus;

PostMessage(DBCombobox1.Handle, WM_KEYDOWN, VK_F4, 0);

end

end;

2) {procedure Tform1.DBCombobox1closeup(Sender: TObject);

Begin DBCombobox1.visible := true;

with Query2 do

begin

Close;

SQL.Clear;

SQL.Add('select itemName from library where itemtype = :s1 ');

ParamByName('s1').AsString := Query1.FieldByName('ItemType').AsString;

end;

end;

}











김동섭 wrote:

소스를 포함한 답변을 드립니다요~ 디비콤보는 아니지만 콤보박스를

디비그리드에서 활용한 프로그램이에요.... 이렇게 쓰시는게 아주 좋을거 같군요...^^



아래 예제는 Del3로 개발한 금융기관에서 쓰는 프로그램의 소스일부입니다....

만약 더 필요하신것이 있으시면 소스를 팍팍 제공해드리지요....

procedure TForm1.DBG1DrawColumnCell(Sender: TObject; const Rect: TRect;

DataCol: Integer; Column: TColumn; State: TGridDrawState);

begin

if (gdFocused in State) then

if DBG1.SelectedField.fieldName = 'STAT' then

begin

CB_m_stat.Left := Rect.Left + DBG1.Left;

CB_m_stat.Top := Rect.Top + DBG1.Top;

CB_m_stat.Width := Rect.Right - Rect.left;

CB_m_stat.Height := Rect.Bottom - Rect.Top;

end

else if DBG1.SelectedField.fieldName = 'GJ_STAT' then

begin

CB_stat.Left := Rect.Left + DBG1.Left;

CB_stat.Top := Rect.Top + DBG1.Top;

CB_stat.Width := Rect.Right - Rect.left;

CB_stat.Height := Rect.Bottom - Rect.Top;

end

else if DBG1.SelectedField.fieldName = 'OWN' then

begin

CB_own.Left := Rect.Left + DBG1.Left;

CB_own.Top := Rect.Top + DBG1.Top;

CB_own.Width := Rect.Right - Rect.left;

CB_own.Height := Rect.Bottom - Rect.Top;

end

else if DBG1.SelectedField.fieldName = 'MGR' then

begin

CB_mgr.Left := Rect.Left + DBG1.Left;

CB_mgr.Top := Rect.Top + DBG1.Top;

CB_mgr.Width := Rect.Right - Rect.left;

CB_mgr.Height := Rect.Bottom - Rect.Top;

end

end;



procedure TForm1.DBG1KeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if key = vk_f4 then

if DBG1.SelectedField.FieldName = 'STAT' then

begin

CB_m_stat.Visible := True;

CB_m_stat.SetFocus;

PostMessage(CB_m_stat.Handle, WM_KEYDOWN, VK_F4, 0);

end

else if DBG1.SelectedField.fieldName = 'GJ_STAT' then

begin

CB_stat.Visible := True;

CB_stat.SetFocus;

PostMessage(CB_stat.Handle, WM_KEYDOWN, VK_F4, 0);

end

else if DBG1.SelectedField.fieldName = 'OWN' then

begin

CB_own.Visible := True;

CB_own.SetFocus;

PostMessage(CB_own.Handle, WM_KEYDOWN, VK_F4, 0);

end

else if DBG1.SelectedField.fieldName = 'MGR' then

begin

CB_mgr.Visible := True;

CB_mgr.SetFocus;

PostMessage(CB_mgr.Handle, WM_KEYDOWN, VK_F4, 0);

end;

end;



procedure TForm1.CB_m_statExit(Sender: TObject);

var

i : Smallint;

s, tmp_s : string;

begin

if CB_m_stat.Text <> '' then

begin

i := 0;

s := CB_m_stat.Text;

if s[1] = '[' then

tmp_s := Copy(s, 2, 4)

else tmp_s := Copy(s, 1, 4);

while i <= CB_m_stat.Items.Count - 1 do

begin

if tmp_s = Copy(CB_m_stat.Items[i], 2, 4) then

begin

CB_m_stat.Text := CB_m_stat.Items[i];

break;

end;

Inc(i);

end;

end;

if i = CB_m_stat.Items.Count then

begin

MessageDlg('찾고자 하는 데이터가 없습니다.',mtError,[mbOk],0);

CB_m_stat.Text := '';

CB_m_stat.SetFocus;

end;

end;



procedure TForm1.CB_m_statKeyPress(Sender: TObject; var Key: Char);

begin

if key = #13 then

begin

if DS1.state in [dsInactive, dsBrowse] then

DS1.Edit;

DBG1.SetFocus;

P64E00_Q1m_stat2.Value := Copy(CB_m_stat.Text, 2, 2);

P64E00_Q1m_stat3.Value := Copy(CB_m_stat.Text, 4, 2);

P64E00_Q1stat.Value := CB_m_stat.Text;

PostMessage(DBG1.Handle, WM_KEYDOWN, VK_RIGHT, 0);

CB_m_stat.Text := '';

CB_m_stat.Visible := False;

end;

end;









> 고수님들께...

> 디비그리드 안에 디비콤보를 넣을 수 없나여...

> 방법을 좀 갈켜 주세요...



1  COMMENTS
  • Profile
    성호종 2000.07.21 21:21
    happykevin wrote:

    아래 제가 제작한 소스가 보이는데요~

    저는 DBComboBox말고 그냥 Combobox 사용한 것입니다.

    첨에는 Transaction문제
    • 이승우
      2000.07.22 03:11
      김규억 wrote: > 파라독스DB에 그래픽파일(gif, jpg, bmp등..)을 저장하는 방법을 좀 가르쳐 주십시오. >...
    • 그냥
      2001.02.13 01:11
      이승우 wrote: > 김규억 wrote: > > 파라독스DB에 그래픽파일(gif, jpg, bmp등..)을 저장하는 방법을 좀 ...
    • rika
    • 2000.07.22 01:48
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.07.22 01:58
      안녕하세요. 최용일입니다. 않될리가 있나요.. 델파이에서 이런걸 Procedual Pointer라고 부릅니다. ...
    • 김태영
    • 2000.07.22 01:46
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.07.22 02:06
      안녕하세요. 최용일입니다. llf란 함수가 비절베이직에서는 많이 쓰이나보죠? 제 생각엔 별 필요없을것 ...
    • 이광민
    • 2000.07.22 01:37
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 강인규
      2000.07.22 02:54
      저도 자세히 알지는 못하지만 그래두 함 적어봅니다. 쿠키를 부여할 때... with response.cookies do...
    • hugehead
      2000.07.22 02:30
      질문이 너무 애매하군요. 좀더 구체적인 질문이었으면 합니다. 이광민 wrote: > 왕왕초보초보델...
    • 송인표
      2000.07.22 03:57
      // 여기나오는 방식은 약간 구식입니다. // 그러나 제일 잘되더군요... // 만약 MyCookie=1 , MyCook...
    • 방문객
    • 2000.07.22 01:02
    • 3 COMMENTS
    • /
    • 0 LIKES
    • BLUE
      2000.08.30 19:51
      방문객 wrote: > 저번에도 여러번 질문을 올렸는데 답변이 없군요... > > stringgrid의 내용을 엑셀로 ...
    • mashall3
      2000.07.22 06:29
      방문객 wrote: > 저번에도 여러번 질문을 올렸는데 답변이 없군요... > > stringgrid의 내용을 엑셀로 ...
    • rika
      2000.07.22 01:30
      방문객 wrote: > 저번에도 여러번 질문을 올렸는데 답변이 없군요... > > stringgrid의 내용을 엑셀로 ...
    • somoon
    • 2000.07.22 00:48
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 방석호
      2000.07.22 02:49
      somoon wrote: > > 델에서 > button1을 클릭하면 copy file하는 초보코딩좀 > > copy sourcefile de...
    • Black}{ole
      2000.07.22 01:03
      somoon wrote: > > 델에서 > button1을 클릭하면 copy file하는 초보코딩좀 > > copy sourcefile de...
    • 성호종
      2000.07.22 01:02
      somoon wrote: > > 델에서 > button1을 클릭하면 copy file하는 초보코딩좀 > > copy sourcefile de...
    • Black}{ole
      2000.07.22 00:22
      왕초보.. wrote: > 큐앤에이란을 아무리 뒤져더 찾을수가 없어서 이렇게 글을올립니다. > Canvas를 이용...
    • 왕초보..
      2000.07.22 00:38
      Black}{ole wrote: > 왕초보.. wrote: > > 큐앤에이란을 아무리 뒤져더 찾을수가 없어서 이렇게 글을올립...
    • 이동근
    • 2000.07.21 23:33
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이동근
      2000.07.26 18:01
      답변해 주시는 분들이 없으시네요... 질문 내용이 너무 부실했나보군요. 해결 방법을 생각하다가... ...
    • 김다음
    • 2000.07.21 23:28
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최석기
      2000.07.22 03:15
      김다음 wrote: > dbgrid의 내용을 엑셀의 saveas로저장했습니다. > procedure > var > workbook : Var...
    • 정지호
      2000.07.22 00:03
      김다음 wrote: > dbgrid의 내용을 엑셀의 saveas로저장했습니다. > procedure > var > workbook : Var...
    • 엑소
    • 2000.07.21 21:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최석기
      2000.07.21 22:01
      엑소 wrote: > 수고하십니다. > 질문 그대로 새롬데이타맨의 왼쪽 아이콘창(?) 구현방법에 > 대해 알고 ...
    • 이현우
    • 2000.07.21 21:41
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 화랑
      2000.07.22 00:31
      이현우 wrote: > 안녕하세요 > 고수님들 > 아켜죠요 > > 다름이 아니라 Web 에서 DATA 을 DLL 에서...
    • 금동이
    • 2000.07.21 21:04
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.07.22 02:12
      안녕하세요. 최용일입니다. 질문만으로는 무엇이 문제인가 확실히 알 수 없군요. 저도 많이 써봤지만 한...
    • 박성일
    • 2000.07.21 20:53
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.07.21 20:58
      안녕하세요. 최용일입니다. 아래와 같이 하세요... Assign할 때 sndbuf := @aa; sndbuf := @bb...
    • 성호종
      2000.07.21 21:21
      happykevin wrote: 아래 제가 제작한 소스가 보이는데요~ 저는 DBComboBox말고 그냥 Combobox 사용한 것...
    • 알로에
    • 2000.07.21 20:49
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 어린왕자
      2000.07.21 22:49
      안녕하세요..영원한 델초보 어린왕자입니다.. 별루 어려울게 없어요..프로시저아시져? 아래 프로시저는...
    • 정지호
      2000.07.21 21:03
      알로에 wrote: > 궁금한게 있어요.. > Sender라는게 있잖아요? > 예를 들면 > procedure TForm1.NewMen...
    • 김태영
    • 2000.07.21 20:46
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.07.21 21:03
      안녕하세요. 최용일입니다. case문에서 end;가 빠졌네요... case Test_FC(i) of 1: ...