본문 바로가기

Delphi Tip219

델파이 AdvStringGrid에서 MultiSelect 델파이 AdvStringGrid에서 MultiSelect 1. option -> RangceSelct = > True 2. MouseAction = > DisjuntCellSelect =>True 2021. 9. 6.
Delphi 스트링그리드(StringGrid) 정렬 Delphi 스트링그리드(StringGrid) 정렬 스트링그리드 컬럼을 선택하면 해당 컬럼으로 정렬됩니다. { ************** SortGrid ************* } procedure TForm1.SortGrid(Grid: TStringGrid; SortCol: Integer); { A simple exchange sort of grid rows } var I, J: Integer; temp: TStringList; begin temp := TStringList.create; with Grid do for I := FixedRows to RowCount - 2 do { because last row has no next row } for J := I + 1 to RowCount - 1 d.. 2021. 9. 3.
델파이 폼 모달 TForm modal, modaless show 델파이 폼 모달 TForm modal, modaless show 1. 모달 폼 띄우기 (팝업창, 모달, modal) ex) 설정폼. TfrmSetup frmSetup := TfrmSetup.Create(Self); // 폼 생성 ..... // 폼 생성 후 보이기 전에 하는 작업 .... try if frmSetup.ShowModal = mrOK then begin // modalresult = OK .... end; finally frmSetup.Free; // 폼 해제 frmSetup := nil; // 그냥 습관임. 폼 변수가 폼 생성 여부를 가르키게.. end; 2. 그냥 폼 띄우기 (모달리스, modaless) ex) 로그창. TfrmLogView 로그창이 떠 있으면 앞으로 보내고, 없으면 띄운.. 2021. 9. 2.
델파이 Tcxgrid 선택한 값 가져오기 델파이 Tcxgrid 선택한 값 가져오기 var i : Integer; vVal : Variant; begin //with cxGridDBTableView16 do //begin // ShowMessage(Columns[Controller.FocusedColumnIndex].Caption); // ShowMessage(Columns[Controller.SelectedColumns[4]].Caption); //end; //cxGridDBTableView16.DataController.SelectRows(4); vVal := Null; for I := 0 to cxGridDBTableView16.DataController.GetSelectedCount-1 do begin vVal := cxGridDBTabl.. 2021. 9. 1.
델파이 퀀텀그리드 Excel출력하기 델파이 퀀텀그리드 Excel출력하기 1. uses 절에 다음을 추가 한다 cxGridExportLink , shellApi 2. 엑셀버튼 클릭시 SaveDialog1.FileName := '상품코드.xls'; if SaveDialog1.Execute then begin ExportGridToExcel(SaveDialog1.FileName, Grid_Master, true, true, false, 'xls'); Application.ProcessMessages; if MessageDlg(SaveDialog1.FileName + ' 파일을 실행하시겠습니까?', mtWarning, [mbYes, mbNo], 0) = mrYes then ShellExecute(self.Handle, PChar('OPEN'), .. 2021. 8. 31.
델파이 TcxDBTreeList 북마크 Bookmarks 사용하기 델파이 TcxDBTreeList 북마크 사용하기 억지스럽지만.....모...; procedure DBTreeListSelectBookmark_Go(DBTreeLiat:TcxDBTreeList; iFocus, iFocus0,iFocus1,iFocus2,iFocus3: integer ); begin case iFocus of 0 : DBTreeLiat.Items[iFocus0].Focused := True; 1 : DBTreeLiat.Items[iFocus0].Items[iFocus1].Focused := True; 2 : DBTreeLiat.Items[iFocus0].Items[iFocus1].Items[iFocus2].Focused := True; 3 : DBTreeLiat.Items[iFocus0].I.. 2021. 8. 27.
델파이 퀀텀트리리스트 TcxDbTreeList 멀티셀렉트 데이터 키값가져오기 델파이 퀀텀트리리스트 TcxDbTreeList 멀티셀렉트 데이터 키값가져오기 procedure TForm1.Button1Click(Sender: TObject); Var i: integer; begin for I := 0 to cxDBTreeList1.SelectionCount - 1 do Memo1.lines.add(TcxDBTreeListNode(cxDBTreeList1.Selections[i]).KeyValue); end; procedure TForm1.Button1Click(Sender: TObject); Var i: integer; begin cxDBTreeList1.DataController.BeginUpdate; try for I := 0 to cxDBTreeList1.SelectionCou.. 2021. 8. 26.
delphi tadvcolumngrid fixedcolor delphi tadvcolumngrid fixedcolor grid.Look을 glStandard로 설정하고 grid.FixedColor를 사용할 수도 있습니다. 2021. 8. 25.
VCL 애플리케이션에서 TControl.StyleElements 사용/미사용 VCL 애플리케이션에서 TControl.StyleElements 사용/미사용 델파이 스타일 제외 시키기 VCL 애플리케이션 생성 Vcl.Controls.TControl.StyleElements 를 사용하려면 VCL Forms Application 을 만들어야 합니다 . 그렇게 하려면 다음 단계를 따르세요. 선택 파일> 새로 만들기> VCL Forms 응용 프로그램 - 델파이 VCL 양식 디자이너 를 열려면 프로젝트 관리자 에서 .pas 단위를 두 번 클릭 한 다음 코드 편집기의 아래쪽 가장자리에 있는 디자인 탭 을 클릭합니다 . 구성 요소 추가 및 설정 조정 애플리케이션을 실행하기 전에 다음을 수행해야 합니다. 드롭 이 TButton 로부터 도구 팔레트를 폼에. 양식의 아무 곳이나 클릭 하고 이벤트 탭 .. 2021. 8. 24.
델파이 동작 없을 시 자동 로그아웃 델파이 동작 없을 시 자동 로그아웃 var Form1: TForm1; tm: integer; Crs: TPoint; implementation {$R *.dfm} procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean); var message: TWMKey; begin if Msg.message = WM_MOUSEMOVE then begin if (Abs(LOWORD(Msg.lParam) - crs.x) > 20) or (Abs(HIWORD(Msg.lParam) - crs.y) > 20) then // 마우스 움직임 감시 tm := 0; end else if (Msg.message = WM_KEYDOWN) or (Msg.message = WM_K.. 2021. 8. 23.
델파이 USB 인식 델파이 USB 인식 USB를 꽂거나 뺏을 때 이벤트 발생 해당 이벤트가 발생하면 처리하는 함수 구현 방법 1. 이벤트 발생 시 파라미터로 받을 데이터 타입 선언 type TWMDeviceChange = packed record Msg : Cardinal; Event: Word; dwData: Longword; Result : LongInt; end; 2. 메인 Form 클래스 안에 함수 선언 TfrmMain = class(TForm) public procedure WMDeviceChange(var Msg: TWMDeviceChange); message WM_DEVICECHANGE; end; 3. 함수 기능 구현 procedure TfrmMain.WMDeviceChange(var Msg: TWMDevice.. 2021. 8. 18.
델파이 ESC키 누르면 폼닫기 델파이 ESC키 누르면 폼닫기 먼저 Form.KeyPreview = True 로 변경 후 procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_ESCAPE then Close; end; 2021. 8. 16.
델파이 마우스 아래의 윈도우 핸들 구하기 델파이 마우스 아래의 윈도우 핸들 구하기 // 아래처럼 타이머를 사용하지 않고 마우스 후킹을 사용하면 좀더 간결한 프로그램을 만들 수 있습니다 // SetWindowsHookEx(WH_MOUSE,...) 를 찾아보세요 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Timer1: TTimer; Memo1: TMemo; procedure Button1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); private.. 2021. 8. 15.
델파이 마우스 위치의 컨트롤 델파이 마우스 위치의 컨트롤 // 마우스 포인터 위치의 콘트롤(콤포넌트)의 이름을 폼의 Caption에 // 출력하는 예로 아래의 Label1, Edit1, Memo1, Button1 등은 임의로 // 올려놓으시고 테스트 해보세요 // Panel 안에 있는 콘트롤도 구분할 수 있습니다 unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Edit1: TEdit; Memo1: TMemo; Button1: TButton; private { Private declarations } proce.. 2021. 8. 14.
델파이 하드디스크 시리얼 알아내기 델파이 하드디스크 시리얼 알아내기 function TF_Main.ReadHDDSerial: String; var MC, FL, PDW : DWord; begin GetVolumeInformation( nil, nil, 0, @pdw, mc, fl, nil, 0 ); Result := IntToStr(pdw); end; 2021. 8. 13.
델파이 모니터 전원 컨트롤 델파이 모니터 전원 컨트롤 // 전원상태를 절전모드로 유지한다. SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 1); // 전원을 원래상태로 둔다. SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, -1); // 전원을 아예 shut off 시킨다. SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2); 2021. 8. 12.
델파이 윈도우 메세지 받는 방법 델파이 윈도우 메세지 받는 방법 - 보내는 통신규약은 아래와 같다고 가정. SendMessage(FindWindow(nil, 'frmDebug'), WM_USER+123, 0, lParam(LongInt(메세지))); 혹은 PostMessage 1. TApplicationEvents 이용 2. 폼에디터에 TApplicationEvents 를 하나 박아넣음 3. 박아넣은 TApplicationEvents 의 OnMessage 함수를 만든다 아래와 같은 모양으로. procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean); begin if Msg.message=WM_USER+123 then begin Memo1.Lines.. 2021. 8. 11.
델파이 WM_USER 메시지 델파이 WM_USER 메시지 윈도우 시스템은, 메시지구동 시스템이죠. 모든 이벤트는 메세지의 발생에 의해서 처리됩니다. 리스트박스 윈도우, 콤보박스윈도우등 모든 이런 각각의 윈도우들은 내부적 메시지처리에의해 원하는 동작을 하게 되는데, 이런 메시지외에 사용자 정의 메시지가 필요할때가 많죠. 예를들어, 콤보에 값이 변경될때, 부모에게 뿐 아니라, 다른곳에도 알려줄 필요가 있거나 할때요. ​ 그러면, 메시지의 값을 아무렇게나 정의해서 사용할수 없죠. #define WM_MY_TEST 100 처럼, 이런식으로 선언한다면, 이미 100이라는 값은 시스템이 내부적으로 예약해서 사용하는 메시지 상수일 수가 있습니다. 그래서, 사용자가 사용해도 되는 구역을 만들어뒀는데 그게 0x400 값부터 , 0x7FFF 까지 입.. 2021. 8. 10.
델파이 윈도우 폼에서 특정 부분 투명 델파이 윈도우 폼에서 특정 부분 투명 특정 폼의 내부가 투명하게 보이도록 하는 기능을 보여줍니다. 이 기능은 폼의 TransparencyKey 속성을 이용해 구현합니다. 간단한 캡처 프로그램을 만들다가 찾은 기능을 소개해볼까 합니다. 폼 안의 영역을 투명하게 해서 아래에 있는 UI가 보이도록 하는 기능입니다. 폼에 구멍을 뚫자 다음과 같은 작업을 해 준다 : 1. 폼에 Panel 개체를 배치하고, 배경색을 붉은 색으로 준다. (BackColor 속성을 Red로 설정한다.) 2. 폼의 TransparencyKey 속성을 Red로 준다. 투명화된 부분을 클릭하면, 클릭에 대한 이벤트로 현재 폼의 아래에 있는 윈도우가 받게 된다는 것을 알 수 있다. 2021. 8. 9.