::: µ¨ÆÄÀÌ Tip&Trick :::

µ¨ÆÄÀÌ Tip&Trick ¼º°Ý¿¡ ¸ÂÁö ¾Ê´Â ±¤°í,ºñ¹æ,Áú¹®ÀÇ ±ÛÀº Áï½Ã »èÁ¦Çϸç
³»¿ëÀ» º¹»çÇÏ¿© »ç¿ëÇÒ °æ¿ì ¹Ýµå½Ã À̰÷(http://www.howto.pe.kr)À» Ãâó·Î ¸í½ÃÇÏ¿© ÁÖ¼¼¿ä


Category

  ±è¿µ´ë(2003-03-06 22:02:08, Hit : 4508, Vote : 1063
 StringGrid ÀÇ ³»¿ëÀ» Ŭ¸³º¸µå·Î º¹»çÇϱâ

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, clipbrd, Grids;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    BitBtn1: TBitBtn;
    Memo1: TMemo;
    procedure FormActivate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
{$R *.DFM}

procedure CopyStreamToClipboard(S: TStream; fmt: Word);
var
  hMem: THandle;
  pMem: Pointer;
begin
  {streamÀÇ À§Ä¡¸¦ ¸Ç ¾ÕÀ¸·Î À̵¿½ÃŲ´Ù}
  S.Position := 0;

  {streamÀÇ Å©±â¸¸Å­ Àü¿ª Èü(heap)¿¡ ¸Þ¸ð¸® ºí·ÏÀ» ÇÒ´çÇÑÈÄ À©µµ¿ì ÇÚµéÀ» ¾ò´Â´Ù}
  hMem := GlobalAlloc(GHND or GMEM_DDESHARE, S.Size);
  if hMem <> 0 then
  begin
    {Àü¿ª ÈüÀÇ ÇÒ´çµÈ ¸Þ¸ð¸® ºí·ÏÀ» °íÁ¤(lock)½ÃŲ´Ù}
    pMem := GlobalLock(hMem);
    if pMem <> nil then
    begin
      {ÇÒ´ç¹ÞÀº ¸Þ¸ð¸® ºí·°¿¡ streamÀÇ ³»¿ëÀ» º¹»çÇÑ´Ù}
      S.Read(pMem^, S.Size);
      {À§ÀÇ S.Read()¿¡ ÀÇÇØ Áõ°¡µÈ Æ÷ÀÎÅ͸¦ ´Ù½Ã ¸Ç ¾ÕÀ¸·Î À̵¿½ÃŲ´Ù}
      S.Position := 0;
      {Àü¿ª Èü¿¡¼­ ¸Þ¸ð¸® ºí·ÏÀÇ Àá±Ý ÇØÁ¦}
      GlobalUnlock(hMem);

      {Ŭ¸³º¸µå¸¦ ¿­·¯¼­ ÁÖ¾îÁø Æ÷¸Ë(¿©±â¼­´Â CF_TEXT)°ú À©µµ¿ì ÇÚµé·Î ÁöÁ¤µÈ
       µ¥ÀÌŸ¸¦ Ŭ¸³º¸µå¿¡ ÁØ´Ù}
      Clipboard.Open;
      try
        Clipboard.SetAsHandle(fmt, hMem);
      finally
        Clipboard.Close;
      end;
    end
    else
    begin
      {¸Þ¸ð¸® lockÀÇ ½ÇÆÐ·Î memory block ¿¹¿Ü¸¦ ¹ß»ý½ÃŲ´Ù}
      GlobalFree(hMem);
      OutOfMemoryError;
    end;
  end
  else
  begin
    {¸Þ¸ð¸® ÇÒ´çÀÇ ½ÇÆÐ·Î memory block ¿¹¿Ü¸¦ ¹ß»ý½ÃŲ´Ù}
    OutOfMemoryError;
  end;
end;

procedure CopyGridToClipboard(theGrid: TStringGrid);
var
  m: TMemoryStream;
  i, j: Integer;
  S: String;
begin
  m := TMemoryStream.Create;
  try
    with theGrid do
      for i := 0 to Pred(RowCount) {RowCount-1} do
        for j := 0 to Pred(ColCount) {ColCount-1} do
        begin
          S := Cells[j, i];
          if j = Pred(ColCount) then // ¸Ç ¸¶Áö¸· ColumnÀ̸é CR/LF ¸¦ Ãß°¡ÇÏ¿© Ç౸ºÐ
            AppendStr(S, #13#10)
          else
            AppendStr(S, #9); // °¢ ColumnÀ» Tab ¹®ÀÚ·Î ±¸ºÐ
          m.WriteBuffer(S[1], Length(S));
        end;
    S[1] := #0; // ¹®ÀÚ¿­ streamÀÇ ³¡ Ç¥½Ã
    m.WriteBuffer(S[1], 1);
    CopyStreamToClipboard(m, CF_TEXT); // streamÀÇ ³»¿ëÀ» Ŭ¸³º¸µå·Î º¹»ç
  finally
    m.Free;
  end;
end;

procedure TForm1.FormActivate(Sender: TObject);
var
  i, j: Integer;
begin
  // ColumnÀÇ titleÀ» ¸¸µç´Ù
  for i := 1 to StringGrid1.ColCount - 1 do
   StringGrid1.Cells[i, 0] := Char(Ord('A')+i-1);

  // RowÀÇ titleÀ» ¸¸µç´Ù
  for i := 1 to StringGrid1.RowCount - 1 do
   StringGrid1.Cells[0, i] := IntToStr(i);;

  // ÀÓÀÇÀÇ ÀڷḦ ¸¸µé¾î¼­ °¢ cell¿¡ ÀÔ·ÂÇÕ´Ï´Ù
  for i := 1 to StringGrid1.ColCount - 1 do
    for j := 1 to StringGrid1.RowCount - 1 do
      StringGrid1.Cells[i, j] := Format('%.0n', [i * j * 10000.0]);
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  // StringGridÀÇ ³»¿ëÀ» Ŭ¸³º¸µå·Î ºÏ»ç
  CopyGridToClipboard(StringGrid1);

  // Ŭ¸³º¸µåÀÇ ³»¿ëÀ» ¸Þ¸ð·Î ºÙ¿©³Ö±â(Å×½ºÆ®¿ë)
  Memo1.Clear;
  Memo1.PasteFromClipboard;
end;

end.





411   [À©µµ¿ìÁî API] ¸ð¼­¸®°¡ µÕ±Ù(rounded ends) TEdit ¸¸µé±â  ±è¿µ´ë 2003/03/07 4989 1289
410   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] TOpenDialog ÀÇ '¼±ÅÃ','Ãë¼Ò' ¹öư À̸§ ¹Ù²Ù±â  ±è¿µ´ë 2003/03/07 4383 1336
409   [À©µµ¿ìÁî API] ·¹Áö½ºÆ®¸® Àüü °Ë»öÇÏ±â  ±è¿µ´ë 2003/03/07 4229 1144
408   [À©µµ¿ìÁî API] ALT_F4 hot key °¡·Îä±â  ±è¿µ´ë 2003/03/07 5665 1621
407   [µ¥ÀÌÅͺ£À̽º] µ¿ÀûÀ¸·Î SELECTÀÇ GROUP BY ¹® ¸¸µé±â  ±è¿µ´ë 2003/03/07 4208 947
406   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ListView ÀÇ item À» °­Á¦·Î ÆíÁý»óÅ·Π¸¸µé±â  ±è¿µ´ë 2003/03/07 4677 1227
405   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] MessageDlg()ÀÇ ÆùÆ®¸¦ ¹Ù²Ù¾î¼­ ¶ç¿ì±â  ±è¿µ´ë 2003/03/07 3920 1072
404   [À©µµ¿ìÁî API] À©µµ¿ìÁî Ž»ö±âÀÇ ÆÄÀÏ, ÄÄÇ»ÅÍ Ã£±â È­¸é ¶ç¿ì±â  ±è¿µ´ë 2003/03/07 6196 1632
403   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] WideString À» String À¸·Î ¹Ù²Ù±â  ±è¿µ´ë 2003/03/07 4531 1131
402   [À©µµ¿ìÁî API] ´Ù¸¥ ApplicationÀÇ È­¸é¿¡ ±ÛÀÚ,±×¸²À» Ãâ·ÂÇÏ±â  ±è¿µ´ë 2003/03/07 3409 870
401   [À©µµ¿ìÁî API] À©µµ¿ìÁî '½ÃÀÛ' ¸Þ´º Refresh ½ÃŰ±â  ±è¿µ´ë 2003/03/07 4632 1420
400   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] StringGrid ¿¡¼­ ÇÁ·Î±×·¥À¸·Î MultiSelect ½ÃŰ±â  ±è¿µ´ë 2003/03/06 5497 1195
399   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] StringGrid ÀÇ ¼±Åÿµ¿ª¸¸ Ŭ¸³º¸µå·Î º¹»çÇÏ±â  ±è¿µ´ë 2003/03/06 4922 1093
398   [À©µµ¿ìÁî API] RichEdit¿¡ ÀÔ·ÂÇÑ ¹®ÀåÀÇ ½ÇÁ¦ ³ôÀÌ ±¸ÇÏ±â  ±è¿µ´ë 2003/03/06 5082 1432
397   [À©µµ¿ìÁî API] DDE ¾²Áö ¾Ê°í IEÀÇ ÇöÀç URL °¡Á®¿À±â  ±è¿µ´ë 2003/03/06 6013 1684
396   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] MemoÀÇ ÇàÀÇ ¹®ÀÚ¼ö¸¦ Á¦ÇÑÇϰí WordWrap½ÃŰ±â  ±è¿µ´ë 2003/03/06 5273 1317
395   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] OEM conversion  ±è¿µ´ë 2003/03/06 4355 1267
394   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ASCII printing  ±è¿µ´ë 2003/03/06 5353 1226
393   [COM/OLE] DelphiÀÇ OCX¸¦ InstallShield·Î ¹èÆ÷ÇÏ´Â ¹æ¹ý  ±è¿µ´ë 2003/03/06 8412 5649
392   [µ¥ÀÌÅͺ£À̽º] Save DBGrid To Excel  ±è¿µ´ë 2003/03/06 7147 1967
  [ÀϹÝ/ÄÄÆ÷³ÍÆ®] StringGrid ÀÇ ³»¿ëÀ» Ŭ¸³º¸µå·Î º¹»çÇÏ±â  ±è¿µ´ë 2003/03/06 4508 1063
390   [À©µµ¿ìÁî API] ·¹Áö½ºÆ®¸®ÀÇ º¯°æ¿©ºÎ ¾Ë¸®´Â 2°¡Áö ¹æ¹ý  ±è¿µ´ë 2003/03/06 4803 1289
389   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] desktop ¹è°æÈ­¸éÀ» ÆûÀÇ ¹è°æÈ­¸éÀ¸·Î ±×¸®±â  ±è¿µ´ë 2003/03/06 3731 1040
388   [¸ÖƼ¹Ìµð¾î] JPEG, WAVE ¸¦ resource ÆÄÀÏ¿¡ ³Ö°í Àоî¿À±â  ±è¿µ´ë 2003/03/06 5377 1231
387   [½Ã½ºÅÛ] ¸¶ÀÌÅ© º¼·ý Á¶ÀýÇÏ±â  ±è¿µ´ë 2003/03/06 4692 1291
386   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] À©µµ¿ìÁî "³¯Â¥/½Ã°£" ¼³Á¤È­¸é ¶ç¿ì±â  ±è¿µ´ë 2003/03/06 6230 1828
385   [½Ã½ºÅÛ] ¿Àµð¿À CDÀÇ º¼·ý Á¶ÀýÇÏ±â  ±è¿µ´ë 2003/03/06 3670 1029
384   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ¹®ÀÚ¿­ ¼ö½Ä¹®Àå(expression)ÀÇ °á°ú ±¸ÇÏ±â  ±è¿µ´ë 2003/03/06 3446 896
383   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ƯÁ¤ ColorÀÇ Invert Color ±¸ÇÏ±â  ±è¿µ´ë 2003/03/06 4339 1323
382   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] µÎ°³ÀÇ RichEdit »çÀÌ¿¡ ³»¿ë º¹»çÇÏ±â  ±è¿µ´ë 2003/03/06 5927 1379
381   [½Ã½ºÅÛ] Redirecting DOS Application Output  ±è¿µ´ë 2003/03/06 4743 1226
380   [½Ã½ºÅÛ] How do I use SetWindowsHookEx ?  ±è¿µ´ë 2003/03/06 6961 964
379   [À©µµ¿ìÁî API] KeyDownÀÇ BeepÀ½À» ¾ø¾ÖÀÚ...  ±è¿µ´ë 2003/03/06 4693 1218
378   [µ¥ÀÌÅͺ£À̽º] ƯÁ¤ ÆûÀÇ ÇöÀç ÆíÁýÁßÀÎ DB Field ±¸ÇÏ±â  ±è¿µ´ë 2003/03/06 4113 1118
377   [À©µµ¿ìÁî API] ÇÁ·Î±×·¥À¸·Î Screensaver µî·ÏÇÏ´Â µÎ°¡Áö ¹æ¹ý  ±è¿µ´ë 2003/03/06 4538 1275
376   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] TObjectÀÇ ÇÁ·ÎÆÛƼ¸¦ ¹®ÀÚ¿­·Î ÂüÁ¶ÇÏ±â  ±è¿µ´ë 2003/03/06 5249 1600
375   [À©µµ¿ìÁî API] ¿ÜºÎ ÇÁ·Î±×·¥À» ÃÖ»óÀ§·Î ¼³Á¤ÇÏ±â  ±è¿µ´ë 2003/03/06 5279 1240
374   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] À̹ÌÁö¸¦ ¸¶¿ì½º·Î drag ÇØ¼­ zoom ÇÏ±â  ±è¿µ´ë 2003/03/06 3644 1030
373   [À©µµ¿ìÁî API] Æú´õ³ª ÆÄÀÏÀÇ À©µµ¿ìÁî µî·ÏÁ¤º¸ dialog ¶ç¿ì±â  ±è¿µ´ë 2003/03/06 5124 1483
372   [³×Æ®¿÷/ÀÎÅͳÝ] How to bring a network down - "Win Nuke"  ±è¿µ´ë 2003/03/06 7353 2002

[ÀÌÀü 10°³] [1]..[11][12][13][14] 15 [16][17][18][19][20]..[25] [´ÙÀ½ 10°³]
 

Copyright 1999-2023 Zeroboard / skin by zero