formatDatetime함수를 이용해서 string으로 변환 할 수 있습니다.
'델파이' 카테고리의 다른 글
중복 실행 방지 (Mutex) (0) | 2009.06.26 |
---|---|
Caps Lock 체크 하는 방법 (0) | 2009.06.26 |
델파이 단축키 (0) | 2009.06.26 |
델파이에서 case문 사용방법 (0) | 2009.06.26 |
한글문자를 초성, 중성, 종성으로 나누기 (0) | 2009.06.26 |
중복 실행 방지 (Mutex) (0) | 2009.06.26 |
---|---|
Caps Lock 체크 하는 방법 (0) | 2009.06.26 |
델파이 단축키 (0) | 2009.06.26 |
델파이에서 case문 사용방법 (0) | 2009.06.26 |
한글문자를 초성, 중성, 종성으로 나누기 (0) | 2009.06.26 |
Ctrl + Shift + R Record * 키매크로 작성순서 : <Ctrl+Shift+R> -> <원하는키> -> <Ctrl+Shift+R>
Ctrl + Shift + P Play
(커서 이동에 관한 단축키)
Ctrl + ←,→ : 이전 단어, 다음 단어
Ctrl + Shift + ←,→ : 이전 단어, 다음 단어까지 블럭
Ctrl + Home : 소스코드 맨 앞으로 이동
Ctrl + End : 소스코드 맨 뒤로 이동
Ctrl + Shift + ↑(↓) : 선언부,구현부 상호간 이동
Ctrl + PageUp : 현재 화면의 맨 윗줄로 이동
Ctrl + PageDown : 현재 화면의 맨 아랫줄로 이동
Alt + {, } : '{'괄호 앞,뒤에서 사용. 짝 찾기.
(), {}, [] 이런 괄호 의 앞부분에 가서 alt + [ 키를 누르면 해당 괄호의 끝으로 간다.
Ctrl + Q + P : 이동하기 전의 위치로 다시 이동
Ctrl + Q + B : 블럭 제일 앞으로 이동
Ctrl + Q + K : 블럭 제일 밑으로 이동
작업하다가 다시 작업하던 곳으로 오려면 북마크를 이용하는 수 밖에 없겠다.
Ctrl + k + 0 : 북마크 0 이 된다. 더 추가 하려면 0 대신에 1~9 까지 있다.
해제 하려면 똑같이 Ctrl + k + 0 를 한번더 하면 된다.
Ctrl + 0 : 북마크 0 으로 돌아 온다. 0~9까지 있다.
(블럭에 관한 단축키)
Shift + Home : 현재 라인 맨 앞까지 블럭
Shift + End : 현재 라인 맨 뒤까지 블럭
Shift + Alt + 방향키(←↑→↓) : 블록 사각형 지정, 칸단위 블럭 설정
Ctrl + KL : 캐럿이 Line Home에 있을 때, Line 블럭
Ctrl + T : 현재 위치에서 단어 마지막 부분까지 삭제
Ctrl + I : 블럭 지정된 문자를 공백으로 변환
Ctrl + N : 다음 Line 맨 앞으로 줄바꿈
Ctrl + M : 줄바꿈
Alt + BackSpace : 실행 취소 (Undo)
Ctrl + E : 알파벳이나 숫자를 누르면 현재 위치에서 밑에 해당 키의 문자가 있는 곳으로 이동한다.
Ctrl + ↑(↓) : 캐럿 고정 스크롤
Ctrl + O + U : 대문자 -> 소문자, 소문자 -> 대문자
Ctrl + Shift + U : 왼쪽으로 땡기기
Ctrl + Shift + I : 오른쪽으로 땡기기
editor Properties 에 들어 가서 general 메뉴에서 Block indent 에서 얼만큼 땡길건지 크기를 조절할 수 있다.
shift + Ctrl + G : OLE interface 에 사용되는 GUID를 랜덤으로 만들어서 삽입해 준다.
CTRL + OO : 현재 유닛의 맨 앞 부분에 여러 가지 컴파일러 지시자를 삽입해 준다.
코드탐색기
F2 : 이름 변경하기(Uses제외)
DoubleClick : 소스코드 탐색기의 해당 코드로 이동
Ctrl + Shift + E : 탐색기<->에디터 창 이동
코드 인사이트(Code Insight)
Ctrl + Space : 코드완성 마법사
Ctrl + Shift : 메소드 파라미터 팁
메소드의 이름을 입력하고 괄호를 입력한 다음에 잠시 기다리면 해당 메소드의 파미터구조가 힌트형태로 보여진다. Ctrl + shift 를 누르면 똑 같은 기능을 한다.
Ctrl + J : 코드 템플릿 사용
툴팁수식평가 디버깅시 수식이 나타나지 않을 경우
Project -> Options 메뉴에 Compiler 페이지에서 Optimization 체크박스를 해제하면 된다.
기타 기능
Alt + F10 : 현재 위치에서 Popup-Menu 띄우기
F11 : View Object Inspector
F12 : Toggle Form/Unit
Alt + 0 : View Window List
Ctrl + F12 : View Unit
Shift + F12 : View Form
컴파일/실행
Ctrl + F9 : Compile
F9 : Run
F7 : Trace Into
F8 : Trace Over
F5 : Set Breakpoint
Ctrl + F5 : Add Watch
Ctrl + F7 : Evaluate/Modif
Caps Lock 체크 하는 방법 (0) | 2009.06.26 |
---|---|
현재 날짜 구하는 함수 (0) | 2009.06.26 |
델파이에서 case문 사용방법 (0) | 2009.06.26 |
한글문자를 초성, 중성, 종성으로 나누기 (0) | 2009.06.26 |
Enter 입력시 Tab효과 주기 In DELPHI (0) | 2009.06.26 |
간단한 예제로 설명을 대신할게요.
참고 하세여...
function TestCase(s: string): boolean;
var
i: Integer;
begin
Result := False;
for i := 1 to Length(s) do
case s[i] of
'0'..'9':; //각각 사용 용도에 맞게 처리 ..
else
Exit; //그외 디폴트 처리..
end;
Result := True;
end;
참 쉽죠잉..ㅎㅎ
현재 날짜 구하는 함수 (0) | 2009.06.26 |
---|---|
델파이 단축키 (0) | 2009.06.26 |
한글문자를 초성, 중성, 종성으로 나누기 (0) | 2009.06.26 |
Enter 입력시 Tab효과 주기 In DELPHI (0) | 2009.06.26 |
StringGrid -> 엑셀 파일로 변환하기 (0) | 2009.06.26 |
function DivHan(Han : String) : String;
const
ChoSung: WideString = 'ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ';
JungSung: WideString = 'ㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ';
JongSung: WideString = ' ㄱㄲㄳㄴㄵㄶㄷㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅄㅅㅆㅇㅈㅊㅋㅌㅍㅎ';
var
i : Integer;
Temp : WideString;
WC : Integer;
IntChoSung, IntJungSung, IntJongSung : Integer;
begin
Temp := Han;
for i := 1 to Length(Temp) do
begin
WC := Ord(Temp[i]) - $AC00;
IntChoSung := WC div (21 * 28);
IntJungSung := (WC Mod (21 * 28)) div 28;
IntJongSung := WC mod (21 * 28) mod 28;
Result := Result + ChoSung[IntChoSung + 1] + JungSung[IntJungSung + 1] + JongSung[IntJongSung + 1];
end;
end;
예제)
procedure TAutoManinForm.Button1Click(Sender: TObject);
begin
EditHanGul2.Text := DivHan(EditHangle.Text);
end;
델파이 단축키 (0) | 2009.06.26 |
---|---|
델파이에서 case문 사용방법 (0) | 2009.06.26 |
Enter 입력시 Tab효과 주기 In DELPHI (0) | 2009.06.26 |
StringGrid -> 엑셀 파일로 변환하기 (0) | 2009.06.26 |
엑셀(Excel) 제어하기 (0) | 2009.06.26 |
If Key = VK_RETURN Then SelectNext(Sender As TWinControl, True, True);
|
델파이에서 case문 사용방법 (0) | 2009.06.26 |
---|---|
한글문자를 초성, 중성, 종성으로 나누기 (0) | 2009.06.26 |
StringGrid -> 엑셀 파일로 변환하기 (0) | 2009.06.26 |
엑셀(Excel) 제어하기 (0) | 2009.06.26 |
델파이에서 엑셀 컨트롤하기 (0) | 2009.06.26 |
function fnStringGridToExcel(StringGrid1: TStringGrid) : Boolean;
var
XL, XArr: Variant;
i, j: Integer;
XLastPosion: String;
Sp : Integer;
begin
//데이타 처리변수
XArr := VarArrayCreate([1, StringGrid1.ColCount], VarVariant);
try
//엑셀을 실행
XL := CreateOLEObject('Excel.Application');
except
MessageDlg('Excel이 설치되어 있지 않습니다.', MtWarning, [mbok], 0);
Exit;
end;
XL.WorkBooks.Add; //새로운 페이지 생성
// XL.Visible := True;
for i := 0 to StringGrid1.RowCount - 1 do begin
for j := 0 to StringGrid1.ColCount - 1 do begin
XArr[j + 1] := StringGrid1.Cells[j, i];
end;
Sp := StringGrid1.ColCount Div 26;
if Sp <> 0 then
XLastPosion := CHR(64 + Sp) + CHR(64 + StringGrid1.ColCount Mod 26)
else
XLastPosion := CHR(64 + StringGrid1.ColCount);
//엑셀에 값을 넣는다.
XL.Range['A' + IntToStr(i + 1), XLastPosion + IntToStr(i + 1)].Value :=
XArr;
end;
//셀 크기 조정
XL.Range['A1', XLastPosion + IntToStr(i + 1)].Select;
XL.Selection.Columns.AutoFit;
XL.Range['A1', 'A1'].Select;
XL.Visible := True;
Result := True;
end;
한글문자를 초성, 중성, 종성으로 나누기 (0) | 2009.06.26 |
---|---|
Enter 입력시 Tab효과 주기 In DELPHI (0) | 2009.06.26 |
엑셀(Excel) 제어하기 (0) | 2009.06.26 |
델파이에서 엑셀 컨트롤하기 (0) | 2009.06.26 |
윈도우 핸들로 IWebbrowser2 포인터 얻기 (0) | 2009.06.26 |
델파이6 기준으로 TexcelApplication,
TExcelWorkbook, TExcelWorksheet, TexcelChart 올려놓고 실행하면 됩니다.
uses절에 Activex 추가하시고 다음과 같이 코딩하면 됩니다.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, excel2000, OleServer, Activex;
type
TForm1 = class(TForm)
Button1: TButton;
ExcelApplication1: TexcelApplication;
ExcelWorkbook1: TexcelWorkbook;
ExcelWorksheet1: TexcelWorksheet;
ExcelChart1: TexcelChart;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
LCID,i : Integer;
Sheet, Selection : Variant;
Format : OleVariant;
//차트용
ChObj: ChartObject;
SheetType: OleVariant;
Rnge, ChType: OleVariant;
Ax: Axis;
begin
excelApplication1.Connect; //엑셀을 가동한다.(InVisible 상태)
ExcelWorkbook1.connectto(excelApplication1.workbooks.add(TOleEnum(xlWBATWorksheet), LCID));
ExcelWorksheet1.connectto(excelWorkbook1.worksheets.item['Sheet1'] as _worksheet );
//워크시트 이름 변경
excelWorksheet1.Name := '날 죽여라';
excelApplication1.DisplayAlerts[LCID] := False;
excelApplication1.Visible[LCID] := true;
Sheet := ExcelApplication1.WorkBooks[ExcelApplication1.Workbooks.Count].WorkSheets[excelWorkbook1.Worksheets.Count];
Sheet.Cells[1,1] := '엑셀서식';
excelApplication1.Range['A1','A1'].borders.lineStyle := 1;
excelApplication1.Range['A1','A1'].borders.Color := clNavy;
excelApplication1.Range['A1','A1'].Interior.Color := clYellow;
//폰트변경
excelApplication1.Range[Sheet.Cells[1,1],Sheet.Cells[1,1]].font.bold := true;
excelApplication1.Range[Sheet.Cells[1,1],Sheet.Cells[1,1]].font.Size := 20;
excelApplication1.Range[Sheet.Cells[1,1],Sheet.Cells[1,1]].font.Name := '±A¼';
//우측정렬(가로정렬)
excelApplication1.Range[Sheet.Cells[1,1],Sheet.Cells[1,1]].HorizontalAlignment := xlHAlignRight;
//가운데정렬(세로정렬)
excelApplication1.Range['B1','B1'].VerticalAlignment := xlHAlignCenter;
//범위로 찍을 경우
excelApplication1.Range['B1','C2'].Value := '123456789';
//숫자형 포맷
Format := '_-* #,##0.0_-;-* #,##0.0_-;_-* "-"???_-;_-@_-';
'@'; // 테스트형식
#,##0.0 // 숫자형식
excelApplication1.Range['B1','B1'].NumberFormatLocal := Format;
Sheet.Range['B2', 'C2'].Interior.Color := RGB(223, 123, 123);
excelApplication1.Range['B4', 'C4'].Interior.Color := clSilver;
//날짜 찍기
Sheet.Cells[5,1] := '2002/5/6';
Sheet.Cells[5,2] := '2002/5/6';
//숫자형
Sheet.Cells[5,3] := '12345';
Sheet.Cells[5,4] := '12345';
//날짜포맷
Format := 'yyyy-mm-dd';
excelWorksheet1.Range[Sheet.Cells[5,1], Sheet.Cells[5,1]].NumberFormat := Format;
Format := 'mmmm d, yyyy';
excelWorksheet1.Range[Sheet.Cells[5,2], Sheet.Cells[5,2]].NumberFormat := Format;
// 스트링형으로 변경
Format := '@';
excelWorksheet1.Range[Sheet.Cells[5,3], Sheet.Cells[5,3]].NumberFormat := Format;
excelWorksheet1.Range['B11','B11'].VerticalAlignment := xlHAlignCenter;
excelWorksheet1.Range['B11','B11'].HorizontalAlignment := xlHAlignRight;
excelWorksheet1.Range['B11','B11'].Value := '셀병합후 가운데(세로) 정렬';
excelWorksheet1.Range['B11','B13'].MergeCells := true;
excelWorksheet1.Range['B11','B13'].borders.LineStyle := 2;
excelWorksheet1.Range['B15','B15'].borders.lineStyle := 0;
excelWorksheet1.Range['B15','B15'].HorizontalAlignment := xlHAlignRight;
excelWorksheet1.Range['B15','B15'].Value := '셀병합후 우측(가로) 정렬';
excelWorksheet1.Range['B15','D15'].MergeCells := true;
excelWorksheet1.Range['B15','D15'].borders.LineStyle := 1;
excelWorksheet1.Range['F15','G20'].MergeCells := true;
excelWorksheet1.Range['F15','F15'].Value := '다중셀병합';
excelWorksheet1.Range['F15','G20'].MergeCells := true;
excelWorksheet1.Range['F15','F15'].HorizontalAlignment := xlHAlignCenter;
excelWorksheet1.Range['F15','F15'].VerticalAlignment := xlHAlignCenter;
excelWorksheet1.Range['F15','G20'].borders.Weight := 4;
//라인 스타일
for i := 0 to 13 do
begin
excelWorksheet1.Range['B'+inttostr((2*i)+16),'B'+inttostr((2*i)+16)].borders.lineStyle := i;
excelWorksheet1.Range['B'+inttostr((2*i)+16),'B'+inttostr((2*i)+16)].Value := 'borders.lineStyle := '+inttostr(i);
end;
//border Weight
for i := 1 to 4 do
begin
excelWorksheet1.Range['B'+inttostr((2*i)+42),'B'+inttostr((2*i)+42)].borders.lineStyle := 1;
excelWorksheet1.Range['B'+inttostr((2*i)+42),'B'+inttostr((2*i)+42)].borders.Weight := 1;
excelWorksheet1.Range['B'+inttostr((2*i)+42),'B'+inttostr((2*i)+42)].Value := 'borders.Weight := '+inttostr(i);
end;
//라인 위치
excelWorksheet1.Range['D18','D18'].borders.Item[1].LineStyle := 1;
excelWorksheet1.Range['D18','D18'].Value := 'borders.Item[1].LineStyle := 1';
excelWorksheet1.Range['D20','D20'].borders.Item[2].LineStyle := 1;
excelWorksheet1.Range['D20','D20'].Value := 'borders.Item[2].LineStyle := 1';
excelWorksheet1.Range['D22','D22'].borders.Item[3].LineStyle := 1;
excelWorksheet1.Range['D22','D22'].Value := 'borders.Item[3].LineStyle := 1';
excelWorksheet1.Range['D24','D24'].borders.Item[4].LineStyle := 1;
excelWorksheet1.Range['D24','D24'].Value := 'borders.Item[4].LineStyle := 1';
//패턴 변경
for i := 1 to 18 do
begin
excelWorksheet1.Range['D'+inttostr(i+24),'D'+inttostr(i+24)].Interior.Pattern := i;
excelWorksheet1.Range['E'+inttostr(i+24),'E'+inttostr(i+24)].Value := 'Interior.Pattern := '+inttostr(i);
end;
{ 이미지를 삽입할 경우 실제파일을 기록해야 되기 때문에 주석처리
실제 파일과 경로명 기록하고 주석푸시고 싱행해보세요
//백그라운드 이미지
//excelWorksheet1.SetBackgroundPicture('C:\My Documents\My Pictures\couplevssolo(6).jpg');
//이미지 입력
Selection := Sheet.Pictures.Insert('C:\My Documents\My Pictures\302492_2.jpg');
//이미지 위치 조절
Selection.ShapeRange.IncrementLeft(243);
Selection.ShapeRange.IncrementTop(605);
}
//수식 입력
Format := '#,##0.00_ ;-#,##0.00;_-* "-"???_-;_-@_-';
excelApplication1.Range['F3','H8'].NumberFormatLocal := Format;
excelWorksheet1.Range['F3', 'H8'].Formula := '=RAND()*10';
excelWorksheet1.Range['F9', 'F9'].Formula := '=SUM(F3:F8)';
excelWorksheet1.Range['G9', 'G9'].Formula := '=SUM(G3:G8)';
excelWorksheet1.Range['H9', 'H9'].Formula := '=SUM(H3:H8)';
excelWorksheet1.Range['I9', 'I9'].Formula := '=SUM(F9:H9)';
excelWorksheet1.Range['F2', 'F2'].Value := '1학년';
excelWorksheet1.Range['G2', 'G2'].Value := '2학년';
excelWorksheet1.Range['H2', 'H2'].Value := '3학년';
excelWorksheet1.Range['E3', 'E3'].Value := '1년';
excelWorksheet1.Range['E4', 'E4'].Value := '2년';
excelWorksheet1.Range['E5', 'E5'].Value := '3년';
excelWorksheet1.Range['E6', 'E6'].Value := '4년';
excelWorksheet1.Range['E7', 'E7'].Value := '5년';
excelWorksheet1.Range['E8', 'E8'].Value := '6년';
excelWorksheet1.Range['E3', 'E8'].HorizontalAlignment := xlHAlignRight;
//차트용 오브젝트 생성
ChObj := (excelWorksheet1.ChartObjects(EmptyParam, lcid) as ChartObjects).Add(600, 10, 400, 250);
excelChart1.ConnectTo(ChObj.Chart as _Chart);
//데이터 범위(데이터뿐만 아니라 가로축 세로축에 찍힐 주석값까지 포함)
Rnge := excelWorksheet1.Range['E2','H8']; // the data range, including titles
//차트타입
ChType := TOleEnum(xl3DColumn);
excelChart1.ChartWizard(Rnge, ChType, EmptyParam, xlColumns, 1, 1, True,
excelWorksheet1.Range['A1', 'A1'].Text, // The chart title
'번호', '점수', EmptyParam, lcid);
Ax := excelChart1.Axes(xlValue, xlPrimary, lcid) as Axis;
Ax.AxisTitle.Font.FontStyle := '굴림체';
//자동 컬럼 폭 맞춤
excelWorksheet1.Range[ XL.Cells[1, 1], XL.Cells[ir, 9]].Select;
excelWorksheet1.Columns.AutoFit;
end;
end
출처 ::
Enter 입력시 Tab효과 주기 In DELPHI (0) | 2009.06.26 |
---|---|
StringGrid -> 엑셀 파일로 변환하기 (0) | 2009.06.26 |
델파이에서 엑셀 컨트롤하기 (0) | 2009.06.26 |
윈도우 핸들로 IWebbrowser2 포인터 얻기 (0) | 2009.06.26 |
AdjustLineBreaks - 개행문자 처리 관련 함수. (0) | 2009.05.26 |
엑셀로 인한 추가 unit 2개 : ComObj, OleCtrls
2. 변수 선언
var
XL : variant ;
begin
XL := CreateOLEObject('Excel.Application'); // OLE컨트롤 생성
XL.DisplayAlerts := False; //경고창 숨기기
XL.WorkBooks.Add; //새화일 열기
XL.SaveAs('C:\test.xls'); //다른이름 저장
XL.quit; //엑셀 언로드 ---> exception 구간에서 사용하기 ! 안사용하면 메모리누수
3. 생각해야 될것 기타 값 입력 모양 변경 등등은
엑셀에 보면 도구 - 메크로 - 메크로 기록이라는 항목이 있는데
거기서 기록 을 누른 후 행동을 하고 ㅁ 버튼을 눌러 메크로 기록을 중지하면
기록된 메크로를 볼 수 있는데 (alt + F11) 여기서 만들어진 메크로를 적용 시키면 된다.
3번이 가장 중요 ! 즉 메크로 기록을 한후 역추적을 통해 코딩 ㄱㄱ
===================================================================================
이하 코드를 통하여 참조하여 주시기 바랍니다. ㄳ
===================================================================================
unit Unit1;
interface
uses
// 엑셀로 인한 추가 unit 2개 : ComObj, OleCtrls
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComObj, OleCtrls, Grids, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
Function ReadExcelFile(sFileName:String):integer;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
ReadExcelFile('12.xls');
end;
function TForm1.ReadExcelFile(sFileName: String): integer;
var
XL, XArr, XTitle : Variant;
sheetNumer,x,y : Integer;
temp : String;
begin
sheetNumer:=1;
temp := 'a1:a1';
try
XL := CreateOLEObject('Excel.Application');
XL.DisplayAlerts := False; //경고창 보이기
XL.workbooks.add; //새화일 열기
XL.ActiveCell.FormulaR1C1 := '=3*3';
XL.ActiveCell.CurrentRegion.Select;
XL.selection.style:='Currency';
XL.Cells[1,3].value := '3';
XL.Range['D22'].Select;
XL.ActiveCell.FormulaR1C1 := 'wonsama';
XL.Selection.Font.ColorIndex := 3;
// 참조항목
// XL.workbooks.Add('C:\test.xls'); //특정 이름의 화일 열기
// XL.workbooks.Open('C:\'+sFileName); //특정 이름의 화일 열기
// XL.ActiveWorkbook.saveas('C:\123.xls'); //활성화된 엑셀 다른 이름으로 저장
// XL.ActiveCell.FormulaR1C1 := '=3*3'; //값입력
// XL.ActiveCell.Font.Bold := True //글자 환경 변경
// XL.ActiveCell.CurrentRegion.Select; //활성화 된 셀의 영역을 선택
// XL.selection.style:='Currency'; //선택영역 통화 형태로
except
result:= 0;
MessageDlg('Excel이 설치되어 있지 않습니다.'+#13+'이 기능을 이용하시려면 반드시 MS오피스 엑셀이 설치되어 있어야 합니다.- ' , MtWarning, [mbok], 0);
XL.quit; //엑셀 언로드
Exit;
end;
XL.Visible := true;
XL:= Unassigned;
end;
end.
출처 ::
StringGrid -> 엑셀 파일로 변환하기 (0) | 2009.06.26 |
---|---|
엑셀(Excel) 제어하기 (0) | 2009.06.26 |
윈도우 핸들로 IWebbrowser2 포인터 얻기 (0) | 2009.06.26 |
AdjustLineBreaks - 개행문자 처리 관련 함수. (0) | 2009.05.26 |
윈도우 핸들로 IWebbrowser2 포인터 얻기. (0) | 2009.05.26 |
uses
ActiveX, Shdocvw_tlb, MSHTML_TLB;
type
TObjectFromLResult = function(LRESULT: lResult; const IID: TIID; wParam: wParam;
out pObject): HRESULT;
stdcall;
function GetIEFromHWND(WHandle: HWND; var IE: IWebbrowser2): HRESULT;
var
hInst: HWND;
lRes: Cardinal;
Msg: Integer;
pDoc: IHTMLDocument2;
ObjectFromLresult: TObjectFromLresult;
begin
hInst := LoadLibrary('Oleacc.dll'); @ObjectFromLresult :=
GetProcAddress(hInst, 'ObjectFromLresult');
if @ObjectFromLresult <> nil then
begin
try
Msg := RegisterWindowMessage('WM_HTML_GETOBJECT');
SendMessageTimeOut(WHandle, Msg, 0, 0, SMTO_ABORTIFHUNG, 1000, lRes);
Result := ObjectFromLresult(lRes, IHTMLDocument2, 0, pDoc);
if Result = S_OK then
(pDoc.parentWindow as IServiceprovider).QueryService(IWebbrowserApp,
IWebbrowser2, IE);
finally
FreeLibrary(hInst);
end;
end;
end;
[※ 참고]
: 프레임의 경우엔 프레임의 인터페이스를 얻는 방법과 Shell Embedding 이란 클래스 핸들을 얻어서 다시 Shell DocObject View 클래스 핸들을 얻고, 다시 Internet Explorer_Server 핸들을 얻으면 됩니다. 그러니까 프레임은 Shell Embedding 클래스 안에 Shell DocObject View가 여러개 있는게 되죠...^^;
출처 : http://skyrack.tistory.com/45#recentTrackback
엑셀(Excel) 제어하기 (0) | 2009.06.26 |
---|---|
델파이에서 엑셀 컨트롤하기 (0) | 2009.06.26 |
AdjustLineBreaks - 개행문자 처리 관련 함수. (0) | 2009.05.26 |
윈도우 핸들로 IWebbrowser2 포인터 얻기. (0) | 2009.05.26 |
델파이에서 엑셀 컨트롤하기. (0) | 2009.05.26 |
뭐하는 함수냐 하면. 혹시 DB에서 Text를 읽어와 TMemo에 그대로 뿌려준다던가,
혹은 다른 상황에서 이상한문자(♬나 º - 비슷하지만 아님)가 나와서
고민하신분 있으신가요?
Memo1.Text := AdjustLineBreaks(문자열..);
검색해 봤는데 없어서 올려봅니다.
-----------------------------------------------------------------------------
- SysUtils에 선언된 명령어 및 설명 입니다.
{ AdjustLineBreaks adjusts all line breaks in the given string to the
indicated style.
When Style is tlbsCRLF, the function changes all
CR characters not followed by LF and all LF characters not preceded
by a CR into CR/LF pairs.
When Style is tlbsLF, the function changes all CR/LF pairs and CR characters
not followed by LF to LF characters. }
function AdjustLineBreaks(const S: string; Style: TTextLineBreakStyle =
{$IFDEF LINUX} tlbsLF {$ENDIF}
{$IFDEF MSWINDOWS} tlbsCRLF {$ENDIF}): string;
- 도움말 설명 입니다.
On Windows:
function AdjustLineBreaks(const S: string; Style: TTextLineBreakStyle = tlbsCRLF): string;
On Linux:
function AdjustLineBreaks(const S: string; Style: TTextLineBreakStyle = tlbsLF): string;
Description
AdjustLineBreaks returns a text string with its line breaks adjusted to fit a specified style.
S is the string to convert.
Style indicates whether line breaks should all be Windows-style line breaks with a carriage return and linefeed (tlbsCRLF), or Linux-style breaks with a single linefeed character (tlbsLF). If Style is omitted, the style for the compile target is used.
출처: 델마당. 무대뽀(kazankros) 님의 글
델파이에서 엑셀 컨트롤하기 (0) | 2009.06.26 |
---|---|
윈도우 핸들로 IWebbrowser2 포인터 얻기 (0) | 2009.06.26 |
윈도우 핸들로 IWebbrowser2 포인터 얻기. (0) | 2009.05.26 |
델파이에서 엑셀 컨트롤하기. (0) | 2009.05.26 |
엑셀(Excel) 제어하기. (0) | 2009.05.26 |