유돌이

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

2009. 6. 26. 14:02 델파이
now는 현재의 년 달 날짜 시간 까지 리턴해주는 함수고

formatDatetime함수를 이용해서 string으로 변환 할 수 있습니다.
 
 
(예제) 
   NowDate := formatDateTime('yyyy-mm-dd',now);

'델파이' 카테고리의 다른 글

중복 실행 방지 (Mutex)  (0) 2009.06.26
Caps Lock 체크 하는 방법  (0) 2009.06.26
델파이 단축키  (0) 2009.06.26
델파이에서 case문 사용방법  (0) 2009.06.26
한글문자를 초성, 중성, 종성으로 나누기  (0) 2009.06.26
posted by 유돌이
2009. 6. 26. 14:02 델파이
폼 디자이너
Ctrl + 방향키(←↑→↓)            : 컴포넌트 위치 이동
Shift + Ctrl + 방향키(←↑→↓)    : 컴포넌트 위치 이동(빠르게)
Shift + 방향키(←↑→↓)           : 컴포넌트 크기 변경
선택 후 ESC                        : Parent컴포넌트로 이동
폼위에 수 많은 판넬들로 이루어진데서 속에 숨어있는 컴포넌트는 앞으로 보이게 하기
메뉴 -> Edit -> Bring to Front

오브젝트 인스펙터
Ctrl + ↓                          : 컴포넌트 선택기 팝업
(팝업 후 알파벳 문자 입력하여 해당 컴포넌트로 이동 가능)
Alt + ↓                           : Property Combo 선택기 팝업
(팝업 후 알파벳 문자 입력하여 해당 컴포넌트로 이동 가능)
Ctrl + Enter                       : 열거형 Property값을 다음 값으로 변경
+선택 후, ←,→                    : 하위 Property펼치기,접기
Ctrl + Tab                         : Properties,Events탭 전환
..선택 + Ctrl + Enter              : Property Editor 열기
Tab                                : Property Name/Value토글

소스코드 에디터
Ctrl + F : 문자열 찾기
Ctrl + R : Replace
F3  : Search Again

Ctrl + Enter                       : 현재위치의 단어로 File Open 시도, 현재 Path 에서 찾지 못하면 Dialog
Ctrl + S                           : 파일 저장
Ctrl + F4                          : 파일 닫기
Ctrl + Shift + C                   : Method/Procedure/Property자동생성

노가다 작업시 정말 유용한 키매크로 기능

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


posted by 유돌이
2009. 6. 26. 14:01 델파이

간단한 예제로 설명을 대신할게요.

참고 하세여...

 

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;

 

 

참 쉽죠잉..ㅎㅎ


posted by 유돌이
2009. 6. 26. 14:01 델파이

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
posted by 유돌이
2009. 6. 26. 14:00 델파이
Enter 입력시 Tab효과 주기 In DELPHI 

If Key = VK_RETURN Then SelectNext(Sender As TWinControl, True, True);

KeyDown 이벤트에서 이렇게 Coding을 해주면 Tab을 누른 것과 같은 효과가 난다...


posted by 유돌이
2009. 6. 26. 13:59 델파이

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;


posted by 유돌이
2009. 6. 26. 13:59 델파이

델파이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

 

 

 

출처 :: Posted by 내멋대로 코딩 나비 (http://skql.tistory.com/tag/Delphi%20Excel)


posted by 유돌이
2009. 6. 26. 13:58 델파이
. 필요 unit


엑셀로 인한 추가 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.

 

 

출처 :: Posted by 내멋대로 코딩 나비 (http://skql.tistory.com/tag/Delphi%20Excel)춉춉 


posted by 유돌이
2009. 6. 26. 13:57 델파이

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 

사진찍는 나귀

posted by 유돌이
2009. 5. 26. 20:24 델파이

뭐하는 함수냐 하면. 혹시 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) 님의 글


posted by 유돌이
prev 1 2 3 4 next