Q&A

  • stringgrid에서 같은 열에서 EnterKey시 행증가....를 어떻게..?
안냐세요.... 전 초짜베기 입니당..
다름이 아니오라..

StringGrid의 5번재 열 1번째 행에서 입력값을 넣은 후 엔터키를 치면
다음 같은 열 2번째 행으로 커서가 움직이게 하고 싶습니다.
그러니까... 같은 열에서 엔터키를 치면 한 칸씩 아래로 내리고 싶다는 거죵..
숫자를 입력하고 엔터를 치면 다음 행에 또 입력하고.. 이런 방식으로 만들고 싶거덩여... 또한 그 숫자 입력시 1234567 을 입력하면 자동으로 1,234,567 .... 이런식으로 나오게 할수는 없는건가영??
입력예) 1 -> 12 -> 123 -> 1,234 -> 12,345 -> 123,456 -> 1,234,567  이런식으로 말이죵~

고수분들.... 아시면.... 좀 알켜주세영....  부탁합니당~~
1  COMMENTS
  • Profile
    홍성락 2002.08.28 00:59
    hsr///////////////////////////////////////////////////////////
    전체를 팁에도 올려서 많은사람들이 손좀보시게 또는 더 좋은 방법이 있는지 공개하겠습니다.

    2가지로 해보았습니다.
    1은 입력후 보통 숫자형으로
    2는 입력시 바꿔가면서
    소숫점사용하도록했구요, 정해놓은 셀엔 숫자만 입력 가능하도록,
    엔터기일때 옆의 셀로 이동입니다
    ....

    {$R *.dfm}
    function gfGetCommaStr(psNum : string) : string;
    var
        sFmt : string;
        i : integer;
    begin
        sFmt := '#,##0';
        if psNum <> '' then begin
            if pos('.', psNum) > 0 then begin
                sFmt := sFmt+'.';
                for i := 1 to (length(psNum) - pos('.', psNum) ) do
                    sFmt := sFmt+'0';
            end;
            Result := FormatFloat(sFmt, StrToFloat(psNum));
        end else
            Result := '0';
    end;


    procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    var
        Oldalign : word;
    begin
        if (ACol in [1,2])and(ARow>=1) then begin
            Oldalign := settextalign(StringGrid1.Canvas.Handle, TA_RIGHT );
            StringGrid1.Canvas.Font := StringGrid1.Font;
            StringGrid1.Canvas.TextRect(Rect,
                                    Rect.Right-5,
                                   (Rect.Top+Rect.Bottom-StringGrid1.Font.Size-2) div 2,
                                    gfGetCommaStr(StringGrid1.cells[ACol,ARow]));
            settextalign(StringGrid1.Canvas.Handle, Oldalign);
        end;

    end;

    procedure TForm1.StringGrid12KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
        //엔터키일때 한칸 옆으로
        if (Key = 13)and(TStringGrid(Sender).Col < TStringGrid(Sender).ColCount-1) then
            TStringGrid(Sender).Col := TStringGrid(Sender).Col + 1;
    end;
    procedure TForm1.StringGrid12KeyPress(Sender: TObject; var Key: Char);
    begin
        //위 해당 셀엔 숫자만 입력 가능케함
        if (TStringGrid(Sender).Col in [1,2])and(TStringGrid(Sender).Row>=1) then
          if not(Key in ['0'..'9','.',#8]) then
             Key := #0;
    end;


    procedure TForm1.StringGrid2SetEditText(Sender: TObject; ACol,
      ARow: Integer; const Value: String);
    var
        SetValue, subStr : string;
    begin
        if (ACol in [1,2])and(ARow>=1) then begin
            SetValue := StringReplace(Value, ',', '', [rfReplaceAll]);
            if SetValue = '' then exit;
            subStr := '';
            if Pos('.',SetValue) > 0 then begin
               subStr := copy(SetValue,Pos('.',SetValue),Length(SetValue));
               SetValue := copy(SetValue,1,Pos('.',SetValue)-1);
            end;

            SetValue := gfGetCommaStr(SetValue)+subStr;
            if SetValue <> StringGrid2.cells[ACol,ARow] then begin
               StringGrid2.cells[ACol,ARow] := SetValue;
               StringGrid2.EditorMode := True;
            end;
        end;
    end;



    procedure TForm1.StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    var
        Oldalign : word;
    begin
        if (ACol in [1,2])and(ARow>=1) then begin
            Oldalign := settextalign(StringGrid2.Canvas.Handle, TA_RIGHT );
            StringGrid2.Canvas.Font := StringGrid2.Font;
            StringGrid2.Canvas.TextRect(Rect,
                                    Rect.Right-5,
                                   (Rect.Top+Rect.Bottom-StringGrid2.Font.Size-2) div 2,
                                    StringGrid2.cells[ACol,ARow]);
            settextalign(StringGrid2.Canvas.Handle, Oldalign);
        end;

    end;

    end.
    • 최수림
    • 2002.08.28 00:41
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2002.08.28 01:33
      hsr/////////////////////////////////////////////////////// EditCaption을 사용하시면 됩니다. proced...
    • Galaxy
      2002.09.03 19:15
      죄송합니다. 이렇게 늦게 답변을 드립니다. 제가 이야기 하는 답변은 정답이 아닐수 있습니다. 다만 참...
    • 이남호
    • 2002.08.27 22:09
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이추형
      2002.08.28 02:39
      function SelectDBerrMsg(const NativeError : integer;const message : string):string; begin  &n...
    • 이남호
      2002.08.28 21:58
      답변 너무나 감사드립니다. 제가 너무 초보자라 사용법을 잘 모르거든요.. 저같은 경우는 다음처럼 로긴...
    • 김상수
    • 2002.08.27 21:34
    • 6 COMMENTS
    • /
    • 0 LIKES
    • Galaxy
      2002.08.27 23:47
      안녕하세요 수고 많습니다. 첨부한 그림처럼 원하는지요? ?????????????? 그럼 수고 하세요 비가 많이...
    • 김상수
      2002.08.27 23:54
      부산은 비 아직 안오는데요..^^; 답변 감사드리구요... 공백에 선은 제거 할 수는 없겠죠??? 첨부...
    • Galaxy
      2002.08.28 00:20
      안녕하세요 수고 많습니다. 님의 말씀대로 스트링 그리드에서는 라인을 제거 할수 없습니다. 그러나 들...
    • 김상수
      2002.08.28 00:47
      답변 감사드리구요... 전설의 콤포넌트 꼭 봤으면 좋겠네요..^^ 그럼 수고하세요..
    • 이추형
      2002.08.27 23:10
      원하는 경우에 맞추는 SQL문을 작성하여 사용합니다. 컴포넌트가 있다고 하더라도 TEMP 파일을 만들어 한...
    • 김상수
      2002.08.27 23:38
      다시 봐주세요
    • 김영호
    • 2002.08.27 20:40
    • 1 COMMENTS
    • /
    • 0 LIKES
    • KDDG_ZZOM
      2002.08.27 20:44
      우선 백업모드가 아카이브모드로 되어 있어야 될것같기도 한데... http://www.oracle.com/kr/support/we...
    • 나옹이
    • 2002.08.27 20:30
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 델퐁
    • 2002.08.27 20:24
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 백화현
    • 2002.08.27 20:17
    • 1 COMMENTS
    • /
    • 0 LIKES
    • KDDG_ZZOM
      2002.08.27 20:25
      너무 막연하네요...^^ TPrinter로 하시면 되는데... 아마 강의실에 양병규님이 올리신 자료보시고 해보...
    • byun
    • 2002.08.27 20:14
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2002.08.27 21:08
      hsr/////////////////////////////////////////////////////// 에러메세지를 써놓으셨다면 알수있겠지만.....
    • 이정용
    • 2002.08.27 19:56
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2002.08.27 21:20
      hsr///////////////////////////////////////////////////// 델파이 IDE의 설정 말씀하시나요? 델 버젼에...
    • 아폴론
    • 2002.08.27 19:46
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 한원희
      2002.08.27 19:55
      안녕하세요. 한원희입니다. 그냥, 해당 이벤트 핸들러의 매개변수만 제대로 맞춰주면 될것 같습니다. ...
    • 아폴론
      2002.08.28 00:26
      var Tkey : Word; begin    Tkey := vk_return;      Fm102.ac_srnoKey...
    • 아폴론
      2002.08.28 00:03
      허걱 그래도 에러가 나네요. 안되면 노가다 엄청 해야 되는데.... Fm102.ac_srnoKeyDown(Self, VK_RET...
    • 이광수
      2002.08.28 01:34
      procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;  Shift: TShiftState); 2번...
    • 홍남경
    • 2002.08.27 19:39
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 한원희
      2002.08.27 20:03
      안녕하세요. 한원희입니다. 이게 맞을런지 잘 모르겠지만, 아래와 같이 한번 해보세요. function Fil...
    • 홍남경
      2002.08.28 08:43
      한가지만 더요~~~ 정적인 DLL사용은 함수 사용후에 DLL이나 메모리를 반납을 해야 하나요? *** 프로그...
    • 한원희
      2002.08.30 21:25
      안녕하세요. 한원희입니다. 답변이 늦었습니다. ^^; 글쎄요. 정적으로 DLL을 호출하게 되면, 따로 DLL...
    • 장재호
    • 2002.08.27 19:37
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2002.08.28 00:59
      hsr/////////////////////////////////////////////////////////// 전체를 팁에도 올려서 많은사람들이 손...
    • 이추형
      2002.08.28 02:09
      1. 엑셀에서 '다른 이름으로 저장' 2. 파일형식을 '텍스트(탭으로분리)(*.txt)' 선택 3. TEXT파일로 저...
    • KDDG_ZZOM
      2002.08.27 19:50
      파워빌더같은 툴을 이용하면 편한데...^^ 아니면 오라클 로더기능을 사용하세요... 사용법은 오라클책같은...
    • 김문식
      2002.08.28 19:07
      텍스트(탭으로 분리)서 저장할때 탭으로 분리 형식이 지원하지 않는 기능이 있습니다 라는 메시지가 뜹니...
    • 이원상
    • 2002.08.27 19:16
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 한원희
      2002.08.27 19:51
      안녕하세요. 한원희입니다. FillChar 프로시저를 사용하시면 될것 같습니다.
    • 조만수
    • 2002.08.27 05:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 임형호
      2002.08.27 06:20
      1번 질문에 대한 것은요. 전역변수와 지역변수의 차이입니다. 간단히 말해서.... 올려주신 문장처럼 기...
    • 나그네
    • 2002.08.27 05:41
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2002.08.27 05:47
      hsr///////////////////////////////////////////////// Chart1.Series[0].Clear; 것 처럼 생성된 각 Ser...