kkuzil.own@gmail.com

Posted
Filed under Development/Delphi
TScrollBox 에서는 기본적으로 마우스 휠이 적용이 안된다.
그래서 적용하는 방법은...

TScrollBox을 품고 있는 폼의 MouseWheel 이벤트에

  if WheelDelta >= 0 then
    SendMessage(scBox.Handle, WM_VSCROLL, SB_LINELEFT, 0)
  else
    SendMessage(scBox.Handle, WM_VSCROLL, SB_LINERIGHT, 0);
  Handled := True;

을 하면 되는데, 다른 컨트롤에 스크롤이 있는경우 모든 스크롤 이벤트를 가로체서 해당 컨트롤에 까지 닫지 않는다.

WindowFromPoint(p: TPoint) 를 이용해서 마우스 커서에 올려져 있는 컨트롤이 TScrollBox인지 스크롤 다른건지 확인해서 넘겨준다.

procedure TForm1.Form1MouseWheel(Sender: TObject;
  Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint;
  var Handled: Boolean);
var
  h: HWND;
begin
  h := WindowFromPoint(MousePos);

  if (h <> vtProc.Handle) and (h <> vtList.Handle) then
    h := scBox.Handle;

  if WheelDelta >= 0 then
    SendMessage(h, WM_VSCROLL, SB_LINELEFT, 0)
  else
    SendMessage(h, WM_VSCROLL, SB_LINERIGHT, 0);
  Handled := True;
end;

이런식으로 폼 MouseWheel 이벤트에 추가해주면 장점이 있는데,
스크롤 할 컨트롤을 굳이 클릭해서 포커스를 주지 않아도 마우스 휠만으로 스크롤이 가능하다는 것이다.
 
끝.
2014/11/05 10:23 2014/11/05 10:23
Posted
Filed under Development/Delphi
다른 컴포넌트나 라이브러리의 클래스를 사용 할때 기존 소스코드의 변형없이 편하게 기능을 추가 할때 helper  클래스를 사용해왔는데 기작성된 메쏘드, 속성이 private에 있으면 사용이 안된다...
하지만...! 약간의 삽질 결과 아주 간단하게 해결됨..!! -ㅁ-)/


private 의 메쏘드와 속성을 사용할때 앞에 자신을 가리켜 주면된다.("Self.")

type
...
...
// 원래 클래스 형태

  TCustomEdit = class(TWinControl)
  private
    ..
    FMaxLength: Integer;
    ..
    ..

// helper 작성
  TTCustomEditHelper = class helper for TCustomEdit

  public
    procedure SetDefMaxLen;
    ..




implementation


procedure TTCustomEditHelper.SetDefMaxLen;
begin
  Self.FMaxLength := 100; // 요렇게
end;
2014/06/30 15:08 2014/06/30 15:08
Posted
Filed under Development/Delphi
아무리


[Delphi] fastreport 에서 PDF로 Export 시 한글 깨지는 문제


에서 나온데로 해보아도 해결이 되지 않아 이것저것 시도하면서 잡질하는데..

결국 알아냈다.

frxReport 컴포넌트에서 리포트 작성시 사용되는 Memo 컨트롤의
Font를 기본에서 "굴림"으로 바꿔주니깐 해결되더라! 아놔...

어쨌든 해결

끝.
2013/09/25 10:04 2013/09/25 10:04
Posted
Filed under Development/Delphi
http://www.delmadang.com/community/bbs_view.asp?bbsNo=3&bbsCat=0&st=&keyword=&indx=399313&keyword1=&keyword2=&page=3

소스를 직접 수정해 줘야 한다고 한다...ㄷㄷ ;;

이걸 직접 알아낸 김문수님께 감사를..!



----------------------------------------------------------


FastReport가 또 업그레이드를 하면서 코드를 바꿨네요...

언제까지 수정을 계속해야 하는지...
 

유니코드 때문에 한글이 깨져 나가네요 ㅜ.ㅜ

 

frxPDFFile.pas

 

라인: 329

 

//기존 function HexEncode7F(Str: WideString): string;

 function HexEncode7F(Str: String): string;

 

라인 2126

//기존       WriteLn(Stream, '/DescendantFonts [' + IntToStr(Index + 1 + Parent.FStartFonts) + ' 0 R]');

  WriteLn(Stream, '/DescendantFonts [' + IntToStr(Parent.FFontDCnt + Parent.FStartFonts) + ' 0 R]');



 

frxExportXML.pas

 

라인: 310

//기존      'ss:FontName="' + EStyle.Font.Name + '" '+

   'ss:FontName="' + UTF8Encode(EStyle.Font.Name) + '" '+

라인: 427

//기존 s := ChangeReturns(UTF8Encode(s));

//기존 WriteExpLn('<Data' + si + '>' + s + '</Data>');

      s := ChangeReturns(s);

      WriteExpLn('<Data' + si + '>' + UTF8Encode(s) + '</Data>');





frxExportHTML.pas

 

라인: 332

//기존        WriteExpLn(' font-family: ' + EStyle.Font.Name + ';'#13#10 +

      WriteExpLn(' font-family: ' + UTF8Encode(EStyle.Font.Name) + ';'#13#10 +





frxRes.pas



라인: 192

//기존    Result := _UnicodeToAnsi(FValues[Integer(FNames.Objects[i])], DEFAULT_CHARSET, FCP) else

    Result := FValues[Integer(FNames.Objects[i])] else



마지막으로... 누가 좀 리소스를 한글화해서 FastReport사에 등록 좀해 주세요...

FastReport 버전업시 다른 나라 랭귀지 추가 할 때 마다 부럽네요 ㅜ.ㅜ
2013/09/23 19:59 2013/09/23 19:59
Posted
Filed under Development/Delphi

GExpert 기능 중 시간을 찍어주는 기능있다.
주석을 달때 시간을 찍어주면 언제 기록한 건지 알수 있는 기능인데 단축키는 Ctrl + Alt + A 이다.

설정에서 시간 형식과 기타 단어를 추가해 줄 수 있다.

메뉴 > GExperts > Configuration... > Editor Experts 탭 > Insert Date/Time

내가 쓰는 형식 = yy_MMdd hh:mm:ss "sunk" (문자는 따옴표로 묶어준다)

@GExperts 단축키 정보와 중복이지만 시간 형식등을 더 추가 한다.


http://sunkj81.cafe24.com/textcube/entry/Delphi-GExperts-%EC%9C%A0%EC%9A%A9%ED%95%9C-%EB%8B%A8%EC%B6%95%ED%82%A4
2013/08/08 14:52 2013/08/08 14:52