본문 바로가기

Development

TComboBox/TDBComboBox.AddObject Integer, String, Object 1-1. to store the integer values:with qryGroups do begin First; while not Eof do begin cbGroups.Items.AddObject(FieldByName('Name').AsString, TObject(FieldByName('ID').AsInteger)); Next; end; end;1-2. to read the integer value from selected item:strID := LongInt(cbGroups.Items.Objects[cbGroups.ItemIndex]); 2-1. to store the string values:with qryGroups do begin First; while not Eof do begin cbGr..
로컬 IP 가져오기 function TForm1.GetLocalAddress:string; var wsaData : TWSAData; slocal : array[0..255] of AnsiChar; phos : PHostEnt; addr : PChar; begin Result := ''; if (WSAStartup(MAKEWORD(1, 1), wsaData) 0) then exit; if (gethostname(slocal, sizeof(slocal)) = SOCKET_ERROR) then exit; phos := gethostbyname(slocal); if phos = nil then exit; addr := PChar(phos.h_addr_list^); Result := inet_ntoa(PInAddr(addr)^);..
Form 생성 및 해제 @ 첫번째 질문 - Form생성방법의 차이점에 대해 먼저 첫번째와 두번째에서 size조절부분은 빼고 생각하겠습니다. 1) 첫번째 NewApp := TForm_Second.Create(Main_Form); 2) 두번째 Application.CreateForm(TForm_Second, Form_Second); [공통점] - 먼저 공통좀은 둘다 TForm_Second 라는 클래스를 생성하는 합니다. 뭐 이건 잘 아실테구.. [차이점들..] 차이점은 의외로 여러개 있습니다. 1) 첫번째는 NewApp 라는 변수에 생성된 폼이 할당되구 두번째는 Form_Second라는 변수에 생성된 폼이 할당되는것이 다릅니다. 2) 그리고 첫번째는 폼의 Owner가 Main_Form이구 두번째는 Owner가 Application..
TDataSet 관련 (TQuery, TFDQuery) #. TDataSet.CachedUpdate := True; DB 에 다이렉트 적용이 아닌 클라이언트 메모리에서 처리후 DB 적용 - CachedUpdate 예제 FDQuery1.CachedUpdate := True; //클라이언트 캐쉬를 이용한다 FDQuery1.Append; ... FDQuery1.Post; //클라이언트 캐쉬에 적용(확정) 한다. FDConnection1.StartTransaction; // 트랜잭션 시작 iErrors := FDQuery1.ApplyUpdates; // 실제 DB 적용 if iErrors = 0 then begin FDQuery1.CommitUpdates; //클라이언트에 남아 있는 변경로그를 비운다. FDConnection1.Commit; // 실제 DB comm..
프로퍼티, property 깊이가 얕으니 언제 써야할지도 잘 모르겠네... 의미는 아주 좋은데.. ㅎㅎ원문 : http://blog.cyworld.com/junqkim/7682933
DateUtils.pas 날짜함수 원문 : http://www.delmadang.com/community/bbs_view.asp?bbsNo=21&bbsCat=0&indx=209893&page=41 //일자를 추출한다. function DateOf(const AValue: TDateTime): TDateTime; //시간을 추출한다. function TimeOf(const AValue: TDateTime): TDateTime; //평년,윤년을 구분하다. function IsInLeapYear(const AValue: TDateTime): Boolean; //오전,오후를 구분한다. function IsPM(const AValue: TDateTime): Boolean; //Word형의 년,월,일 파라메타의 유효성을 체크한다. function ..
자식컨트롤 특정 클래스타입 찾기 var i, checkedCount: Integer; begin for i:=0 to GBMultiUpdate.ControlCount-1 do begin if TComponent(GBMultiUpdate.Controls[i]).ClassType = TCheckBox then if (GBMultiUpdate.Controls[i] as TCheckBox).Checked then Inc(checkedCount); end; end;
DBGrid 타이틀 클릭시 정렬하기(order by) DBGrid 는 ordering(sorting) 기능이 없다. DataSet(TFDQuery) 는 쿼리한 결과를 모두 가지고 있지 않다. 즉, 메모리에 모두 담고있지 않기 때문에 쿼리를 다시 해야 한다.이는 DataSet(TFDQuery).RecordCount 함수를 실행했을때 실제 쿼리결과의 row count 와 틀린 원인과 동일하다. // DBGrid 타이틀 클릭 procedure TfrmMain.DBGExamTitleClick(Column: TColumn); begin DoSortGrid(Column); end; // 쿼리 order by procedure TfrmMain.DoSortGrid(Column: TColumn); var sSQL : String; iPos,i : Integer; pQry ..