HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

DBGrid sorának másolása vágólapra


Példaprogram letöltése

5015 bájt

E példánkban készítünk egy olyan komponenst, mely képes arra, hogy egy hozzákapcsolt tetszőleges DBGrid aktuális sorát a vágólapra másolja. A másolás úgy történik, hogy az egyes cellák adatai sztringként kerülnek a vágólapra, melyek közé egy tetszőleges elválasztó karaktert helyeztethetünk a komponenssel, mely lehet tab, enter, vagy bármilyen más általunk választott sztring.

A mellékelt példaprogram megnyitása előtt a CopyRow.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A komponens DBGrid nevű property-jében választhatjuk ki a kezelendő DBGrid komponenst.
A SpecialDelimiter property-ben választhatjuk ki, hogy tab vagy enter legyen-e az elválasztójel az egyes cellák szövegei között.
procedure TCopyRow.SetSpecialDelimiter(const Value: TSpecialDelimiter);
begin
  FSpecialDelimiter := Value;
  if FSpecialDelimiter=sdTab then begin
    FDelimiter := #9;
  end else begin
    if FSpecialDelimiter=sdEnter then begin
      FDelimiter := #13;
    end;
  end;
end; 
A Delimiter property-ben adhatunk meg egy tetszőleges sztringet, mely a cellák szövegei közé kerül.
procedure TCopyRow.SetDelimiter(const Value: string);
begin
  FDelimiter := Value;
  FSpecialDelimiter := sdOther;
end;
Másolást a Copy eljárás meghívásával végezhetjük el. Egy ciklus segítségével végigmegyünk a DBGrid oszlopain, majd minden cella tartalmát bemásoljuk egy átmeneti sztringbe.
procedure TCopyRow.Copy;
begin
  if Assigned(FDBGrid) then begin
    with FDBGrid do begin
      for i:=0 to FDBGrid.FieldCount-1 do begin
        s:=s+FDBGrid.Fields[i].AsString;
Cellák szövegei közé beillesztjük az elválasztó sztringet, ügyelve arra, hogy az utolsó cella után már ne kerüljön be ez az elválasztó jel.
        if i<>FDBGrid.FieldCount-1 then begin
          s:=s+FDelimiter;
        end;
      end;
Végül az átmeneti sztring tartalmát a vágólapra helyezzük.
      Clipboard.AsText:=s;
    end;
  end;
end;
Komponensünket fel kell készíteni egy olyan esetre, amikor a DBGrid property-hez hozzákötött DBGrid komponens törlésre kerül a Form-ról. Ez esetben a Copy eljárást meghívva, az futási hibát okozna, mivel egy nem létező DBGrid-re próbálna hivatkozni. Ennek elkerülése végett felülírjuk a Notification eljárást, mely minden új komponens létrejötte, illetve törlése esetén meghívásra kerül.
procedure TCopyRow.Notification(AComponent: TComponent; Operation: TOperation);
begin
  inherited;
Ha azt látjuk, hogy az aktuális művelet törlés, illetve a törlésre kerülő komponens a DBGrid property-ben tárolt, akkor a property-hez tartozó változó értékét törölnünk kell.
  if (Operation=opRemove) and (AComponent=FDBGrid) then begin
    FDBGrid:=nil;
  end;
end;

Cikksorozat

#IDKategóriaCikk címeSorozat
3047WindowsAz XML bemutatása1. rész
3059WindowsAz XML bemutatása2. rész
3068WindowsAz XML bemutatása3. rész
3077WindowsAz XML bemutatása - deklarációk4. rész
3086WindowsAz XML bemutatása - MSXML, XSLT5. rész
3094WindowsAz XML bemutatása - DTD6. rész
3105WindowsXML adatok megjelenítése Excel-ben7. rész
3114WindowsDokumentum hivatkozások az XML-ben8. rész
3123WindowsXML adattípusok9. rész
3132WindowsXML adatok HTML oldalakon10. rész
3141WindowsXML Notepad11. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2002 évkönyv 530. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |