Q&A

  • 스트링그리드에 관하여.......
안녕하세요.

스트링그리드에서 정렬을 할려고 하는데 잘 되지 않아요.

정렬하는 메소드가 있나요 아니면 직접 코딩을 해야 하나ㅏ요?

도와주세요.



2  COMMENTS
  • Profile
    모승열 1999.05.24 19:56
    박용근 wrote:

    > 안녕하세요.

    > 스트링그리드에서 정렬을 할려고 하는데 잘 되지 않아요.

    > 정렬하는 메소드가 있나요 아니면 직접 코딩을 해야 하나ㅏ요?

    > 도와주세요.

    >



    만약 Sort가 아니구 Alignment라면요...

    TStringGrid의 OnDrawCell Event를 이용해서 해결하면 됩니다.



    procedure TForm1.StringGrid1DrawCell(.........생략......);

    var

    iLength : integer;

    sTemp : string

    begin

    with StringGrid1.Canvas do begin

    sTemp := StrignGrid1.Cells[Acol, ARow];



    if Acol = 0 then // 가운데 정열

    iLength := (Rect.Right - Rect.Left - TextWidth(sTemp) div

    2 + Rect.Left



    else if Acol = 1 // 왼쪽정열 (기본값이 왼쪽)

    iLength := Rect.Left + 2



    else // 오른쪽 정열

    iLength := Rect.Right - TextWidth(sTemp) - 4;

    FillRect(Rect);

    TextRect(Rect, iLength, Rect.Top+4, sTemp);

    end;//with

    end;

  • Profile
    김우철 1999.05.24 11:21
    정확히 어떤 내용인지 모르겠지만, 혹시 도움이 될까 해서 적습니다.

    db에 있는 데이터라면 SQL의 Order By를 이용하면 되겠지만, 그런건 아닌것 같구요.스트링그리드에 뿌려줄 데이터가 배열형태로 되어 있으면 sorting algorithm을 이용하면 되지않을까 생각합니다.

    삽입정렬, Quick Sort, Binary Sort, Bubble Sort등 여러가지가 있는데,

    제가 만든 프로그램에서 사용한 삽입정렬 소스를 올려드리겠습니다.



    procedure TfrmAdjust.Isort(var DayOfinv : array of DayOfInvRec ; n : integer);

    var

    i, j : integer;

    Temp : real;

    TempName : String;

    begin

    for j := 1 to (n-1) do begin

    Temp := DayOfInv[j].value;

    TempName := DayOfInv[j].Name;

    i := j - 1;

    while (i >= 1) and (DayOfInv[i].value > temp) do begin

    DayOfInv[i+1].value := DayOfInv[i].value;

    DayOfInv[i+1].Name := DayOfInv[i].Name;

    i := i - 1;

    end; // while

    DayOfInv[i+1].value := Temp;

    DayOfInv[i+1].Name := TempName;

    end; // for

    end; //procedure...



    여기서 DayofInv는 레코드배열 형태로 선언된 변수이고, DayOfInv.value에 의해서

    정렬하도록 되어있습니다.

    이런식으로 정렬을 한다음에 StringGrid에 뿌려주면 될것같은데.....

    도움이 되셨으면 좋겠네요....

    • 이상석
    • 1999.05.24 19:17
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 모승열
      1999.05.24 20:11
      메인윈도우의 name이 FrmMain, 자식윈도우 name이 FrmChild라면 . . . implementation uses uChild;//...
    • 이상석
      1999.05.24 22:04
      모승열 wrote: > 메인윈도우의 name이 FrmMain, 자식윈도우 name이 FrmChild라면 > . > . > . > imple...
    • 조용덕
    • 1999.05.24 19:15
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.24 22:04
      아래를 참고하세요. 알맞게 고쳐서 사용하세요. procedure DrawIcon(Fs: String); var Icon ...
    • 이미영
    • 1999.05.24 18:07
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.24 18:40
      GetFocus를 사용해 보세요. GetFocus를 하면 현재 키보드입력상태에 있는 콘트롤의 핸들값을 반환합니다. ...
    • 이미영
      1999.05.24 22:08
      Procedure MessageHandler(mm: Tmessage); var CHandle: HWND; Begin CHandle := GetFocus(); ...
    • 이정욱
      1999.05.24 22:22
      아래를 참고하세요. 쩝.. 근데 저 안 멋져요.. ^^; procedure SendData(TargetWnd : HWnd; StrMsg: str...
    • 최장민
    • 1999.05.24 17:03
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.24 18:57
      TMediaPlayer를 보면 OnNotify 이벤트가 있습니다. 이곳에서 코딩을 해주시면 되는데... 예를들면.. pro...
    • 하명훈
    • 1999.05.24 15:29
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.24 18:43
      데이타베이스는 어떤것을 사용하셨나요? 혹시 ODBC로 연결을 하셨는지요? 짐작이 가는것이라면 맨 처음 ...
    • 이정현
    • 1999.05.24 11:27
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.24 18:45
      AsMemo말고 AsString으로 해보세요. Query1.ParamByName('N3').AsString := Memo1.Text; //메모... 그리...
    • VMNT
    • 1999.05.24 08:56
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.24 19:05
      아마도 생성은 하셨지만 어느순간에 지워야 하는지를 여쭙는것 같습니다. 그렇다면 이렇게 해보세요. Chi...
    • 영인
    • 1999.05.24 06:10
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.05.24 08:42
      영인 wrote: > 집합형 변수중에서 궁금한게 있는데요...빨리 답을 좀 알아야 하는 상황이라서......어느 ...
    • 박용근
    • 1999.05.24 02:37
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 모승열
      1999.05.24 19:56
      박용근 wrote: > 안녕하세요. > 스트링그리드에서 정렬을 할려고 하는데 잘 되지 않아요. > 정렬하는 ...
    • 김우철
      1999.05.24 11:21
      정확히 어떤 내용인지 모르겠지만, 혹시 도움이 될까 해서 적습니다. db에 있는 데이터라면 SQL의 Order B...
    • 이호선
    • 1999.05.23 23:32
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.24 01:08
      이호선 wrote: > 안녕하세요.. > 시스템 디렉토리(예 : C:Windows 또는 C:WINDOWSSYTEM )을 얻어올수 있...
    • 초심
      1999.05.24 00:15
      이호선 wrote: > 안녕하세요.. > 시스템 디렉토리(예 : C:Windows 또는 C:WINDOWSSYTEM )을 얻어올수 있...
    • 조진희
    • 1999.05.23 21:02
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.05.24 01:16
      조진희 wrote: > 제가 델파이 헬펑에서 음력양력 로직을 받아서 작업을 하고 있어요.. > 근데 아무리 봐...
    • 초보
      1999.05.25 10:18
      정말 감사합니다.. 훨씬 이해가 가는군요.. 근데 저희 초보들은 파라미터는 쿼리 할때 변수사용하려고 사...
    • 초보
    • 1999.05.23 08:32
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 초심
      1999.05.24 00:40
      초보 wrote: > 저희가 개발중인 프로그램의 프로젝트 이름을 바꾸려고 해요... > 어디를 바꾸면 되는지요...
    • 초보
      1999.05.24 08:05
      고맙습니다.. 근데요... 한글은 안되나요.. 그래도...정말 정말 고마와요...
    • 박성식
    • 1999.05.23 07:01
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.24 01:10
      아스키 문자라는것이.. 아스키 코드를 말씀하시나요? 그렇다면... ord 를 사용하시면 됩니다. 단, Ord...
    • 박성식
      1999.05.27 23:09
      이정욱 께서 말씀하시기를... > 아스키 문자라는것이.. 아스키 코드를 말씀하시나요? > 그렇다면... > ...
    • 이정욱
      1999.05.27 23:28
      온라인 상에서 직접 작성하는것이라서 수정이 필요할 수 있습니다. function StrToAsc(Str : String) : ...
    • 안명호
    • 1999.05.23 06:03
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.24 01:12
      SetForegroundWindow 를 사용하세요. 메세지 박스가 뜨기직전에 해주세요. SetForgroundWindow(Handle); ...
    • 안명호
    • 1999.05.23 00:13
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.05.24 01:14
      안명호 wrote: > 컨트롤 내에서가 아니라... > 프로그램 외부에서 예를 들어 탐색기에서 > 파일을 드래...