Q&A

  • TAdvStringGrid에 체크박스에 대해서 질문드립니다.
TAdvStringGrid 셀 안에

gird.AddCheckBox(2, i+1, false, false);

를 선언을해서 체크박스를 만들었습니다..

쿼리에 디폴트 값을 'Y'로 둔 상태에서.. (여부은 쿼리에 디폴트된 NAME)

쿼리에 Piter가 001 값을 가지고 있느데.. (001은 사과를 뜻함)

piter가 001이고 디폴트값이 'Y'일때 체크를 하고 싶은데..

이벤트를 이용해서 해야할지..아니면 어떤식으로 해야할지 감이 안와서..

질문 드립니다.

간단히 말하면

TAdvStringGrid  에...

piter  여부  사과               감       귤
001     Y        ㅁ  <-체크   ㅁ        ㅁ

이럴때 사과 부분에 체크가 하게 하려고여;;;

많은 조언 부탁 드립니다.
14  COMMENTS
  • Profile
    소울해커 2008.10.24 01:41
    그리드에

    piter 여부 사과 감 귤
    001 Y ㅁ <-체크 ㅁ ㅁ

    라고 뿌려주는 부분이 있으실겁니다.

    거기서 작성해 주시면 되는데

    체크박스가 미리 만들어져 있는 경우라면

    grid.Cells[0, i] := Query1.FieldByName( 'piter' ).AsString;
    grid.Cells[1, i] := Query1.FieldByName( '여부' ).AsString;
    grid.SetCheckBoxState(3, i, (grid.Cells[0, i] = '001') and (grid.Cells[1, i] = 'Y') );
    grid.SetCheckBoxState(4, i, (grid.Cells[0, i] = '002') and (grid.Cells[1, i] = 'Y') );
    grid.SetCheckBoxState(5, i, (grid.Cells[0, i] = '003') and (grid.Cells[1, i] = 'Y') );

    이런 형태가 될것이고 체크박스를 뿌려주면서 만드는 경우라면

    grid.Cells[0, i] := Query1.FieldByName( 'piter' ).AsString;
    grid.Cells[1, i] := Query1.FieldByName( '여부' ).AsString;
    grid.AddCheckBox(3, i, (grid.Cells[0, i] = '001') and (grid.Cells[1, i] = 'Y') , False );
    grid.AddCheckBox(4, i, (grid.Cells[0, i] = '002') and (grid.Cells[1, i] = 'Y') , False );
    grid.AddCheckBox(5, i, (grid.Cells[0, i] = '003') and (grid.Cells[1, i] = 'Y') , False );

    요런 형태가 되겠네요.
  • Profile
    꼬꼬마 2008.10.24 20:38
    감사합니다~~

    한가지 질문이 있는데요~~

    grid.SetCheckBoxState(3, i, (grid.Cells[0, i] = '001') and (grid.Cells[1, i] = 'Y') );
    grid.SetCheckBoxState(4, i, (grid.Cells[0, i] = '002') and (grid.Cells[1, i] = 'Y') );
    grid.SetCheckBoxState(5, i, (grid.Cells[0, i] = '003') and (grid.Cells[1, i] = 'Y') );


    실행을 해서~

    쭉타고 내려오면~~



    마지막 003을 체크되야할 체크박스 부분이 체크가 안되는데;;

    이건 어떤 문제이지요??

    for 문을 돌릴때 문제가 생기는껄까요?

    흠....




  • Profile
    소울해커 2008.10.24 21:38
    grid.SetCheckBoxState(3, i, (grid.Cells[0, i] = '001') and (grid.Cells[1, i] = 'Y') );
    grid.SetCheckBoxState(4, i, (grid.Cells[0, i] = '002') and (grid.Cells[1, i] = 'Y') );
    grid.SetCheckBoxState(5, i, (grid.Cells[0, i] = '003') and (grid.Cells[1, i] = 'Y') );

    grid.SetCheckBoxState({요기} <--

    체크박스가 있는 컬럼인데 위에 예시로 보면 3,4,5 가 아니라 2,3,4 로 해주셔야됩니다.

    grid.SetCheckBoxState(2, i, (grid.Cells[0, i] = '001') and (grid.Cells[1, i] = 'Y') );
    grid.SetCheckBoxState(3, i, (grid.Cells[0, i] = '002') and (grid.Cells[1, i] = 'Y') );
    grid.SetCheckBoxState(4, i, (grid.Cells[0, i] = '003') and (grid.Cells[1, i] = 'Y') );

    이렇게...
  • Profile
    꼬꼬마 2008.10.25 00:00
    점심 식사는 하셨나요^^

    좋은 정보 많이 주시는데...

    갑자하 하다가 궁금증이 생겨서요...

    날짜 지역 piter 여부 사과 감 귤
    20081024 강원도 001 Y ㅁ ㅁ ㅁ
    20081024 강원도 002 Y ㅁ ㅁ ㅁ
    20081024 서울 003 Y ㅁ ㅁ ㅁ


    이런식으로~ 있다고 하면요~

    데이터가 많을때에는 보기가 좀 힘들거 같아서요..

    날짜 지역 여부 사과 감 귤
    20081024 강원도 Y ㅁ <-케크 ㅁ <-체크 ㅁ
    20081024 서 울 Y ㅁ ㅁ ㅁ <-체크

    날짜랑 지역을 기준으로

    하나로 만들어서 하는게 나중에 자료가 만을때는 보기 편할거 같은데;

    이런식으로는 어떻게 하면 될까요..??

    이거 계속 물어봐서...죄송요..^^*
  • Profile
    소울해커 2008.10.25 00:47
    쿼리에서 날짜와 지역으로 DISTINCT 해서 불러오거나

    GROUP BY로 불러오거나

    ROWNUM 으로 중복값을 제거하셔도 됩니다.

    쿼리 수정하기가 번거롭다면 마찬가지로 불러오면서 중복된 컬럼을 제거 하시면 됩니다.


    var
    iDateRow, iAreaRow: Integer;

    begin
    iDateRow := -1;
    iAreaRow := -1;

    grid.RowCount := Query1.RecordCount + 1;

    for i := 0 to Query1.RecordCount - 1 do
    begin
    iDateRow := grid.Cols[0].IndexOf(Query1.FieldByName('날짜').AsString);
    iAreaRow := grid.Cols[0].IndexOf(Query1.FieldByName('지역').AsString);
    if Not ( ( (iDateRow <> -1) and (iAreaRow <> -1) ) and ( iDateRow = iAreaRow) ) then
    begin
    { 데이터 그리드에 뿌려주기 }
    grid.RowCount := grid.RowCount - 1;
    end;

    Query1.Next;
    end;

    end;

    이런식으로 처리하셔도 되고

    TMS 그리드에 있는 그룹기능을 이용하셔도 됩니다.

    아니면 중복되는 행을 HideRows로 감추셔도 되구요.
  • Profile
    꼬꼬마 2008.10.25 01:13
    근데요...

    중복값을 제가한다는게...

    어떻게 보면 중복값이 아니지 않나여?

    날짜 지역 piter 여부 사과 감 귤
    20081024 강원도 001 Y ㅁ ㅁ ㅁ
    20081024 강원도 002 Y ㅁ ㅁ ㅁ

    날짜와 지역이 중복은 되만 piter값은 틀리 잖아요

    제말은 날짜와 지역을 합친다는 말인데.. (합친다는게 제거 한다는 말하고 같나..ㅎㅎ)

    지금 SQL게이트오라클을 쓰고 있는데 DISTINCT 을 사용하면 완전히 제거를 한다는 것이고..

    DISTINCT 하면 안될거 같구요..

    말씀하신데로 그리드 자체에서 하나로 합쳐서 piter 값대로 사과 감을 체크를 해야.....

    위에 말씀하신 코드로 해보니...

    이상하게 에러가 나네여...ㅎㅎㅎ

    멀 잘못했나..ㅎㅎㅎ

    ^^*


    이부분에서..
    if Not ( ( (iDateRow <> -1) and (iAreaRow <> -1) ) and ( iDateRow = iAreaRow) ) then


    [Error] grdListIn.pas(565): Operator not applicable to this operand type

    이런 에러가..발생 하는데...요건또 먼소리인지.ㅠㅠ



  • Profile
    소울해커 2008.10.25 01:59

    셀병합을 말씀하시는 것 같은데... 그거라면 위에 쓴건 필요없구요.

    일단 쿼리에서 정렬순서를 날짜, 지역, piter 순으로 해서 불러오세요.

    그리고 나서 그리드에 데이터 뿌려주실때...

    var
    iMergeStart: Integer;

    begin
    iMergeStart := grid.FixedRows;

    grid.RowCount := Query1.RecordCount + 1;

    for i := 0 to Query1.RecordCount - 1 do
    begin
    grid.Cells[0, i + 1] := Query1.FieldByName('날짜').AsString;
    grid.Cells[1, i + 1] := Query1.FieldByName('지역').AsString;
    grid.Cells[2, i + 1] := Query1.FieldByName('piter').AsString;
    if grid.Cells[0, i ] = grid.Cells[0, i + 1] then
    begin
    if grid.Cells[1, i ] <> grid.Cells[1, i + 1] then
    begin
    grid.MergeCells(0, iMergeStart, 1, i + 1 - iMergeStart);
    grid.MergeCells(1, iMergeStart, 1, i + 1 - iMergeStart);
    iMergeStart := i + 1;
    end;
    end else iMergeStart := i + 1;

    Query1.Next;
    end;

    이런 형태로 하시면 될껍니다.
  • Profile
    꼬꼬마 2008.10.25 04:33
    아~~~셀 병합은 되었어요~~

    근데요..ㅠㅠ

    머가..좀 이상한게요..

    날짜 지역 piter 여부 사과 감 귤
    20081024 강원도 001 Y ㅁ ㅁ ㅁ
    20081024 강원도 002 Y ㅁ ㅁ ㅁ
    20081025 서울 002 Y ㅁ ㅁ ㅁ
    20081025 서울 003 Y ㅁ ㅁ ㅁ
    20081026 부산 003 Y ㅁ ㅁ ㅁ



    위에 전체 데이터..

    아래는 모든 정보가 간단하게...체크도 다되고...

    날짜 지역 여부 사과 감 귤
    20081024 강원도 Y ㅁ <-체크 ㅁ <-체크 ㅁ
    20081025 서 울 Y ㅁ ㅁ <-체크 ㅁ <-체크
    20081026 부 산 Y ㅁ ㅁ ㅁ <-체크

    이런식으로 셀이 간단해 지면서...piter부분도 모두 되게요~

    위 소스를 해보니 병합은 되는데...

    체크는 001번밖에 되지 않더라구여....

    흠...

    이거 병합으로 해결될 문제는 아닐꺼 같은데요??

    특정 Array에 날짜랑 지역을 담고 비교하면서.....

    체크도 하고.... 셀도 간추려 되지 않을까 하는 제 생각입니다...ㅎㅎ

    해커님도 바쁘실텐데....

    오늘 하루 도움을 정말 많이 주셔서 감사합니다..

    오늘 해커님 덕분에 많이 공부를 한거 같아여..

    병합부터 시작해서 체크까지...

    완전 오늘 많이 공부한거같아요;;;^^

    이번 질문이 마지막 질문 될꺼 같네요^^;;;

    ^^*




  • Profile
    소울해커 2008.10.27 19:05
    똑같은 형태에다가

    var
    iMergeStart: Integer;
    IsAlreadyCheck: Boolean;

    begin
    iMergeStart := grid.FixedRows;
    IsAlreadyCheck := False;

    grid.RowCount := Query1.RecordCount + 1;

    for i := 0 to Query1.RecordCount - 1 do
    begin
    grid.Cells[0, i + 1] := Query1.FieldByName('날짜').AsString;
    grid.Cells[1, i + 1] := Query1.FieldByName('지역').AsString;
    grid.Cells[2, i + 1] := Query1.FieldByName('piter').AsString;
    grid.SetCheckBoxState(3, iMergeStart, (grid.Cells[0, i] = '001') and (grid.Cells[1, i] = 'Y') and (GetCheckBoxState(3, iMergeStart, IsAlreadyCheck) <> True ) );
    grid.SetCheckBoxState(4, iMergeStart, (grid.Cells[0, i] = '002') and (grid.Cells[1, i] = 'Y') and (GetCheckBoxState(3, iMergeStart, IsAlreadyCheck) <> True ) );
    grid.SetCheckBoxState(5, iMergeStart, (grid.Cells[0, i] = '003') and (grid.Cells[1, i] = 'Y') and (GetCheckBoxState(3, iMergeStart, IsAlreadyCheck) <> True ) );
    if grid.Cells[0, i ] = grid.Cells[0, i + 1] then
    begin
    if grid.Cells[1, i ] <> grid.Cells[1, i + 1] then
    begin
    grid.MergeCells(0, iMergeStart, 1, i + 1 - iMergeStart);
    grid.MergeCells(1, iMergeStart, 1, i + 1 - iMergeStart);
    iMergeStart := i + 1;
    end;
    end else iMergeStart := i + 1;

    Query1.Next;
    end;

    이런식으로 조건은 각 행을 검사하고 체크할 행은 기준이 되는 행에다가만 잡고서 하면될겁니다.

    반복적으로 체크가 토글되지않게 Boolean 변수하나 넣어주고

    체크박스의 상태값을 읽어온 뒤 체크가 안된상태에서 조건을 만족하면 체크를 하도록 말이죠.

  • Profile
    꼬꼬마 2008.10.27 22:50
    이것좀 한번 바 주실래여??

    try
    With grd do

    begin
    iMergeStart := grdList.FixedRows;
    IsAlreadyCheck := False;

    grdList.RowCount := HRecord_Cnt +1 ;

    for i := 0 to HRecord_Cnt -1 do

    begin
    grdList.AddCheckBox(CHECK, i+1, false, false);

    grd.AddCheckBox(WIN, i+1, false, false); //체크박스를 만듭니다.
    grd.AddCheckBox(WEB, i+1, false, false);//체크박스를 만듭니다.
    grd.AddCheckBox(CALL, i+1, false, false);//체크박스를 만듭니다.
    grd.AddCheckBox(KIO, i+1, false, false);//체크박스를 만듭니다.

    grd.SetCheckBoxState(WIN, iMergeStart, (grdList.Cells[SALE, i] = \'001\') and (grdList.Cells[Flag, i] = \'Y\') and (GetCheckBoxState(RG1_WIN, iMergeStart, IsAlreadyCheck) <> True ) );
    grd.SetCheckBoxState(WEB, iMergeStart, (grdList.Cells[SALE, i] = \'002\') and (grdList.Cells[Flag, i] = \'Y\') and (GetCheckBoxState(RG1_WEB, iMergeStart, IsAlreadyCheck) <> True ) );
    grd.SetCheckBoxState(CALL, iMergeStart, (grdList.Cells[SALE, i] = \'003\') and (grdList.Cells[Flag, i] = \'Y\') and (GetCheckBoxState(CALL, iMergeStart, IsAlreadyCheck) <> True ) );
    grd.SetCheckBoxState(KIO, iMergeStart, (grdList.Cells[SALE, i] = \'004\') and (grdList.Cells[Flag, i] = \'Y\') and (GetCheckBoxState(KIOSK, iMergeStart, IsAlreadyCheck) <> True ) );


    Cells[CRUD , i+1] := \'R\';
    Cells[DATE , i+1] := Fn_fmtDATE(HostData[i, 4]) ; //날짜
    Cells[ABB_CD , i+1] := GetCboCodeToText(cbPlaySeqCD, HostData[i, 5]); //지역코드
    Cells[ABB_NM , i+1] := HostData[i, 8]; //지역이름
    Cells[ST_TIME, i+1] := HostData[i, 6]; //시작
    Cells[ED_TIME, i+1] := HostData[i, 7]; //종료
    Cells[SALE , i+1] := HostData[i, 9]; //\'001~004 부분
    Cells[Flag , i+1] := HostData[i, 10]; // \'Y'

    if grdList.Cells[DATE, i ] = grdList.Cells[DATE, i + 1] then
    begin
    if grd.Cells[SEQ_CD, i ] <> grd.Cells[SEQ_CD, i + 1] then
    begin
    if grd.Cells[SEQ_NM, i ]<> grd.Cells[SEQ_NM, i + 1] then



    grd.MergeCells(PLAY_DATE, iMergeStart, 1, i + 1 - iMergeStart);
    grd.MergeCells(ABB_CD, iMergeStart, 1, i + 1 - iMergeStart);
    grd.MergeCells(ABB_NM, iMergeStart, 1, i + 1 - iMergeStart);
    grd.MergeCells(ST_TIME, iMergeStart, 1, i + 1 - iMergeStart);
    grd.MergeCells(ED_TIME, iMergeStart, 1, i + 1 - iMergeStart);
    grd.MergeCells(WIN, iMergeStart, 1, i + 1 - iMergeStart);
    grd.MergeCells(WEB, iMergeStart, 1, i + 1 - iMergeStart);
    grd.MergeCells(CALL, iMergeStart, 1, i + 1 - iMergeStart);
    grd.MergeCells(SALE, iMergeStart, 1, i + 1 - iMergeStart);
    grd.MergeCells(KIO, iMergeStart, 1, i + 1 - iMergeStart);

    iMergeStart := i + 1;
    end;
    end else iMergeStart := i + 1;


    먼가 문제가 있는듯....ㄷㄷ
  • Profile
    소울해커 2008.10.27 23:23
    grd 는 뭐고 grdList는 뭔지요?

    그리드 두개를 묶어서 쓰시는건지 아니면 잘 못쓰신건지 모르겠네요.

    grdList는 빼버리시고

    HRecord_Cnt는 레코드 카운트값을 받아넣은거 같고

    Cells의 Column 자리에 들어가는건 상수로 만들어 놓으신거 같고...

    여기까진 큰 문제가 없는데

    grd.SetCheckBoxState(WIN, iMergeStart, (grdList.Cells[SALE, i] = \'001\') <-- 이런형태의 마지막부분...

    \'001\' 여기서 \ 이게 왜 들어가는건지... \ 문자 전부 빼세요. 작은따옴표 안이건 밖이건 다 필요없습니다.


    if grdList.Cells[DATE, i ] = grdList.Cells[DATE, i + 1] then <-- 비교식 A
    begin
    if grd.Cells[SEQ_CD, i ] <> grd.Cells[SEQ_CD, i + 1] then <-- 비교식 B
    begin
    if grd.Cells[SEQ_NM, i ]<> grd.Cells[SEQ_NM, i + 1] then <-- 비교식 C

    이 부분...

    처음 코드 제가 올렸을때 이 형식을 해둔 이유는

    첫번째 비교대상이되는 날짜 컬럼에서 현재 행이 이전 행과 값이 같으면

    하나로 병합될 셀로 인식하고

    그 상태에서 두번째 컬럼의 현재 행이 이전 행과 값이 다르면

    첫번째 컬럼과 두번째 컬럼 모두 비교식 B에서 나온 i의 값, 즉 i행까지 만 병합하고

    iMergeStart 값, 즉 다음 병합 시작할 행값을 i + 1번째 즉, 마지막으로 병합된 행 다음 행으로 잡기 위해서 한겁니다.

    즉, 동일 날짜에 한해서 연속된 동일 지역을 동일지역이 끝나는 부분...

    20081010 서울 001
    20081010 서울 002 <-- 여기까지
    20081011 서울 003 <-- 여기까지
    20081011 경기 002
    20081011 경기 003 <-- 여기까지
    ...

    위의 여기까지를 하나의 행으로 구분지어서 병합하기 위한거죠.

    위의 구문대로 간다면 piter까지 구분에 들어가버려서

    날짜 / 지역 / piter 3개가 전부 각각 이전 행과 동일한 행에 대해서만 동작이 됩니다.

    즉 비교식 C는 빼야합니다.
  • Profile
    꼬꼬마 2008.10.28 00:04
    아..그건 제가 잘못 쓴거구요..

    grd랑 grdList는 잘못쓴거구요.

    위 소스는

    이런 식으로 살짝 변경이 된거에여

    ㅁ선택 날짜 지역코드 지역명 판매시작 판매종료 사과 감 귤 배 piter 여부
    ㅁ 20080930 01 서울 16:30 19:30 ㅁ ㅁ ㅁ ㅁ 001 y
    ㅁ 20080930 01 서울 16:30 19:30 ㅁ ㅁ ㅁ ㅁ 002 y
    ㅁ 20080930 01 서울 16:30 19:30 ㅁ ㅁ ㅁ ㅁ 002 y
    ㅁ 20080931 02 경기 13:30 16:30 ㅁ ㅁ ㅁ ㅁ 001 y


    피터랑 여부는 뒤로 빠지다면..

    날짜 지역코드 지역명으로..
  • Profile
    소울해커 2008.10.28 00:25
    어차피 지역명은 지역코드를 따라가기 때문에 비교식 C는 필요없습니다.

    그부분 처리하고 \ 전부 제거하면 별 문제 없을겁니다.

    단, 병합후에 행높이는 따로 잡아주셔야 될겁니다.

    루프 다돌고 DefaultRowHeight := '행높이'; 한줄 추가해 주시면 마무리 될겁니다.
  • Profile
    꼬꼬마 2008.10.28 09:11
    아......

    드디어!!!!

    성공했습니다....ㅋ.ㅋ

    휴~~~~ 해커님 감사합니다..ㅋ.ㅋ

    그래도 다행히 되서..ㅎㅎ

    보람 있네여...^^*

    해커님 감사합니다!!! ^__^/
    • TOMATO
    • 2008.10.24 19:26
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 석주현
      2008.10.24 19:34
      Test.exe 핸들을 가지고 메시지를 보내면 되지 않을까요.
    • 정경철
    • 2008.10.24 05:13
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.10.24 16:49
      pChar 말고 로컬 변수로 Array of Char[크기] 로 선언 후 사용해 보세요. 알아서 관리 됩니다. ^^
    • 이정욱
      2008.10.24 16:50
      사실 위의 에러에 관련된 부분은 윗 부분의 소스만을 가지고는 판단하기 어려울 것 같습니다.
    • 정경철
      2008.10.24 19:00
      DLL 함수 원형에 파라미터값이 char *out_print_flag 이처럼 되어 있어서 델파이에서 PChar 로 받...
    • 이정욱
      2008.10.24 19:55
      제 뜻이..그거였습니다. ^^ Array[크기] of Char...
    • 이정욱
      2008.10.24 16:54
      보통 Timeout 속성을 설정하고 사용하게 되죠.. 혹시 .socket.close 는 사용해 보셨나요?
    • 이승현
      2008.10.28 21:47
      넵 다 안됩니다. ㅜ.ㅜ
    • 아르스
    • 2008.10.24 03:06
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 아르스
      2008.10.24 03:20
      ExtractICon(HInstance, 'C:\icon.dll', 0); 이런식으로 뽑아서 쓰면 되네요 ^^
    • 아르스
      2008.10.28 18:48
      음... 뭐가 문제인지 몰라도 아이콘이 추출되었다 안되었다 하는거 같네요..
    • TOMATO
    • 2008.10.24 00:00
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.10.24 00:28
      예외처리라고 쓰인 부분에서 하시는것이 아니라 TSaveDialog.Execute에서 하시는것이 맞습니다. if Save...
    • 장진환
      2008.10.24 01:10
      if SaveDialog1.Execute = mrOK then // OK 버튼을 눌렀을 때... if SaveDialog1.Execute = true the...
    • 최용일
      2008.10.24 02:19
      이런... 실수했군요... ^^
    • 황성일
    • 2008.10.23 02:59
    • 0 COMMENTS
    • /
    • 0 LIKES
    • phono
      2008.10.23 21:56
      기본 데이터 컨트롤에 있는 그리드로는 안되구요.. 그래서 그리드보다는 db 컨트롤 그리드가 마련되...
    • 소울해커
      2008.10.24 02:06
      DBGrid 안에 라디오버튼을 넣으실려면 상당히 복잡합니다. 대충 그려보면 private rdFirst,...
    • 장성호
      2008.10.23 00:38
      뭐 대부분 다음과 같이 하면 됩니다. WebBroswer1.OleObject.Document.ParentWindow.ScrollTo( Y ...
    • 이강석
      2008.10.23 00:46
      음....근데 Y, X의 좌표는 어디서 나오는건지 제가 무식해서~~ㅠㅠ
    • 장성호
      2008.10.23 01:07
      기냥 맨 마지막으로 보내려면 WebBrower1.OleObject.Document.DocumentElement.scrollTop :=20000000...
    • 이강석
      2008.10.23 01:56
      음..위에처럼 엄청 큰숫자를 줬어도..... 스크롤을 중간에다가 놓고... 저 조건을 타면 중간정도로...
    • 장성호
      2008.10.23 02:52
      테스트 해보니 Naver.com , daum.net ,paran.com 은 되구.. empas.com 은 안되구 http://ww...
    • 이강석
      2008.10.23 03:01
      아...^^ 넵 감사합니다...찾아볼꼐요...^^
    • 이강석
      2008.10.24 02:08
      OleDocument.body.scrollTop := OleDocument.body.scrollHeight; 이렇게 하니깐 되긴 되는데...제대...
    • 이정욱
      2008.10.25 09:06
      Fields Edit에서 아예 설정 하지 않으면 저절로 모든 필드가 세팅됩니다. 그렇게 사용하시면 될거 같은데...
    • 정경철
      2008.11.13 06:32
      Fields Edit에서 표시 형식이나... Excel 로 변환 할때 Field 순서등을 지정 하기 위에서 설정을 하였습...
    • 꼬꼬마
    • 2008.10.22 19:51
    • 14 COMMENTS
    • /
    • 0 LIKES
    • 소울해커
      2008.10.24 01:41
      그리드에 piter 여부 사과 감 귤 001 Y ㅁ <-체크 ㅁ ...
    • 꼬꼬마
      2008.10.24 20:38
      감사합니다~~ 한가지 질문이 있는데요~~ grid.SetCheckBoxState(3, i, (grid.Cells[0, i] = '001')...
    • 소울해커
      2008.10.24 21:38
      grid.SetCheckBoxState(3, i, (grid.Cells[0, i] = '001') and (grid.Cells[1, i] = 'Y') ); grid.Se...
    • 꼬꼬마
      2008.10.25 00:00
      점심 식사는 하셨나요^^ 좋은 정보 많이 주시는데... 갑자하 하다가 궁금증이 생겨서요... 날...
    • 소울해커
      2008.10.25 00:47
      쿼리에서 날짜와 지역으로 DISTINCT 해서 불러오거나 GROUP BY로 불러오거나 ROWNUM 으로 중복값을...
    • 꼬꼬마
      2008.10.25 01:13
      근데요... 중복값을 제가한다는게... 어떻게 보면 중복값이 아니지 않나여? 날짜 ...
    • 소울해커
      2008.10.25 01:59
      셀병합을 말씀하시는 것 같은데... 그거라면 위에 쓴건 필요없구요. 일단 쿼리에서 정렬순서를 날짜...
    • • • •
    • 정경철
      2008.10.22 20:07
      이 메시지만 보면.. SQL 문장이 잘못 된것 같은데 SQL 조건절이나 ODBC를 다시 한번 확인 해 보십시오.
    • 가르쳐주삼
      2008.10.22 23:29
      ODBC 문제였네요~^^ 감사합니다.
    • 홍성락
      2008.10.23 04:42
      아마! 인덱스가 넘는다는 건데요. 소스상에서 ...Bitmap.Scanline[인덱스]의 소스를 디버깅 해보세요. ...
    • 정경철
      2008.10.22 20:05
      혹시..전송속도가 많지 않을 싶은데 전송속도를 한번 맞춰 보십시오. 보통 9600bps 로 되어 있는데 48...
    • 황성일
      2008.10.22 20:13
      9600bps로 해야지만 저렇게 숫자가 제대로 나오고요 나머지는 다 이상한 외계어 문자들이 찍히내요
    • 이정욱
      2008.10.22 20:55
      저것은 외계어가 아닌 프로토콜 상의 시작과 끝을 알려주는 문자 같습니다. 숫자가 제데로 들어오니까요....
    • 석주현
      2008.10.22 21:30
      개발사에 프로토콜을 의뢰 하시는게 맞을 겁니다. 달랑 저거 하나만 쓰는 경우라면 모르지만 보통 다...
    • 황성일
      2008.10.22 21:48
      아 답변들 감사합니다. 머라고 말하긴 점 그렇지만-.- 당황스럽게도 이 리더기 개발사 망했더군요;; ...
    • 장성호
      2008.10.22 05:18
      가능합니다. var fZoom: Double; // 축소하기 (Zoom-Out) procedure TForm1.Button2Click...
    • 이강석
      2008.10.22 18:48
      감사합니다...^^
    • 문형국
    • 2008.10.21 23:33
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2008.10.22 08:01
      이건 보통dll이 아니네요, Register에 등록 부터하여야 합니다. 델파이에서 'import Type Library'로 dll...
    • 문형국
      2008.10.30 10:58
      답변 감사드립니다. 시도해 보겠습니다. 꾸벅~
    • 이정욱
      2008.10.25 09:08
      TBX툴바에 대해 조금 더 자세한 정보를....
    • 아르스
      2008.10.27 20:38
      아... TBX가 Toolbar2000이(tb2k)이랑 서로 호환되지 않으면(패치를 했다손 치더라도) 이런 문제가 발...
    • 델파인
    • 2008.10.21 20:03
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.10.21 19:31
      간단하게 실행파일명 뒤에 파라매터를 추가하세요 Winexec('xxx.exe parameter1 parameter2', SW_SHOW...
    • 장성호
      2008.10.21 20:52
      WinExec보다는 ShellExecute 나 CreateProcess 를 이용하는것이 좋습니다. 참조 http://blog.naver...