Q&A

  • MaskEdit 에 날자나 시간을 수정할때
윈도우 에서 시간을 수전할때 스핀버튼을 이용하는데요



어떤방식으로 MaskEdit 에서 시.분.초 를 구분해서 수정 하는 것인지

(커서가 있는 위치) 서 수정이 이루어지는지



궁금 합니다.

1  COMMENTS
  • Profile
    Mr.Q 2000.11.19 10:31
    명문 wrote:

    > 윈도우 에서 시간을 수전할때 스핀버튼을 이용하는데요

    >

    > 어떤방식으로 MaskEdit 에서 시.분.초 를 구분해서 수정 하는 것인지

    > (커서가 있는 위치) 서 수정이 이루어지는지

    >

    > 궁금 합니다.



    제가 생각하는 것이 정석인지 편법인진 몰라도용...

    EditBox안에 EditBox를 집어넣는 것이죠. 크기조정하고 borderStyle을 bsNone으로

    한뒤 스핀버튼과 연결하면 되죵. 저도 윈도서 시간조절하는모양이랑 비슷하게

    해볼꺼라고 해봤는데.. 쉽지만은 안더군여. 윤년계산이랑 이것저것 따져볼게 좀

    됩니다. 이렇게 해도.. 델파이에선 좀 문제가 되는게 있습니다. 포커스문제죠.

    델파이는 이상하게도 포커스에 좀 문제가 있는것 같습니다. 여튼 다음은 예전에

    제가 위와 같은 쓸때없는짓?..한다고 .. 나온 미완성 쏘스입니다. DateTimePicker콤포

    가 있으니.. 특별한 목적이 아니라면.. 이렇게 할 필욘 없겠죠?







    procedure TForm1.FormCreate(Sender: TObject);

    begin

    Edit2.Text:=FormatDateTime('yy',Date);

    Edit3.Text:=FormatDateTime('mm',Date);

    Edit4.Text:=FormatDateTime('dd',Date);

    end;



    procedure TForm1.UpDown1ChangingEx(Sender: TObject;

    var AllowChange: Boolean; NewValue: Smallint;

    Direction: TUpDownDirection);

    var //윤달, 윤년계산 제외하면, Max,Min속성으로 년, 월, 일을 설

    정해도 됨. if edit4 then Max=31, min=1;

    tmpDate:TDate; //윤달과 윤년계산 루틴 필요.

    begin //31일이 넘어가면 자동으로 월수를 증가시키는 루틴 필요. 12

    월일 넘어가면 년수를 증가시키는 루틴필요

    if Activecontrol is TEdit then

    begin



    if TEdit(ActiveControl).Name='Edit4' then //Day

    begin

    if Direction in [updUp] then

    begin

    tmpDate:=StrToDate(Edit2.Text+'-'+Edit3.Text+'-'+Edit4.Text)+1;

    Edit4.Text:=FormatDateTime('dd', tmpDate);

    end

    else if Direction in [updDown] then

    begin

    tmpDate:=StrToDate(Edit2.Text+'-'+Edit3.Text+'-'+Edit4.Text)-1;

    Edit4.Text:=FormatDateTime('dd', tmpDate);

    end

    else ;

    end



    else if TEdit(ActiveControl).Name='Edit3' then //Month

    begin

    if Direction in [updUp] then

    begin

    tmpDate:=StrToDate(Edit2.Text+'-'+Edit3.Text+'-'+Edit4.Text)+31;

    Edit3.Text:=FormatDateTime('mm', tmpDate);

    end

    else if Direction in [updDown] then

    begin

    tmpDate:=StrToDate(Edit2.Text+'-'+Edit3.Text+'-'+Edit4.Text)-31;

    Edit3.Text:=FormatDateTime('mm', tmpDate);

    end

    else ;

    end



    else if TEdit(ActiveControl).Name='Edit2' then //Year

    begin

    if Direction in [updUp] then

    begin

    tmpDate:=StrToDate(Edit2.Text+'-'+Edit3.Text+'-'+Edit4.Text)+365;

    Edit2.Text:=FormatDateTime('yy', tmpDate);

    end

    else if Direction in [updDown] then

    begin

    tmpDate:=StrToDate(Edit2.Text+'-'+Edit3.Text+'-'+Edit4.Text)-365;

    Edit2.Text:=FormatDateTime('yy', tmpDate);

    end

    else ;

    end



    else ;

    end;

    end;



    procedure TForm1.Label1Click(Sender: TObject);

    begin

    Showmessage(ActiveControl.name);

    end;



    end.







    님아... 분류는 VCL이 될것같네용. ^^;

    저도 요즘은 분류에 신경을 많이쓰고 있담니당.