Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kopiranje u clipboard

[es] :: Pascal / Delphi / Kylix :: Kopiranje u clipboard

[ Pregleda: 1243 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

XGhost

Član broj: 33279
Poruke: 331
37.203.86.*



+1 Profil

icon Kopiranje u clipboard15.06.2016. u 02:48 - pre 94 meseci
Trebam napraviti komandu koja ce simulirati rad tipki CTR+C dakle kopiranje oznacenog teksta u ClipBoard.
Medjutim ne odgovara mi komanda koja se odnosi samo na jedan objekt kao npr
Edit1.CopyToClipBoard;
vec mi treba komanda kojom cu kopirati selektovani tekst sa bilo koje komponente na formi
npr ako imam Edit1,Edit2,Edit3, Memo1 itd...

Svi primjeri koje sam nasao uglavnom idu na kopiranje samo sa jedne komponente.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Kopiranje u clipboard15.06.2016. u 11:22 - pre 94 meseci
Sve te komponente imaju CopyToClipboard pa je to i najbolji način da kopiraš selektovani sadržaj.
Ako neka nema onda možeš napisati class helper za recimo TWinControl, dodatna metoda npr. MyCopyToClipboard, tako da bi onda zvao NekaKontrola.MyCopyToClipboard.

A za implementaciju te metode možeš da iskoristiš simulaciju Ctrl+C u slučaju da kontrola ima fokus. Ako nema i ako ne možeš menjati fokus (barem privremeno) onda je teže i morao bi ručno pozivati odgovarajuće metode, slati win poruke ili pisati neki dodatni kod i to za svaku pojedinačnu kontrolu koja ti treba a nema sama CopyToClipboard.

Code:

procedure SimulateKey(const AKey: Word; const AShift: TShiftState);
type
  TShiftKeyInfo = record
    Shift: Byte;
    VKey: Byte;
  end;
  
  ByteSet = set of 0..7;
const
  ShiftKeys: array[0..2] of TShiftKeyInfo = ((Shift: Ord(ssCtrl); VKey: VK_CONTROL), (Shift: Ord(ssShift); VKey: VK_SHIFT), (Shift: Ord(ssAlt); VKey: VK_MENU));
var
  bShift: ByteSet absolute AShift;
  i: Integer;
begin
  for i := 0 to High(ShiftKeys) do
    if ShiftKeys[i].Shift in bShift then
      keybd_event(ShiftKeys[i].VKey, MapVirtualKey(ShiftKeys[i].VKey, 0), 0, 0);

  keybd_event(AKey, MapVirtualKey(AKey, 0), 0, 0);
  keybd_event(AKey, MapVirtualKey(AKey, 0), KEYEVENTF_KEYUP, 0);

  for i := High(ShiftKeys) downto 0 do
    if ShiftKeys[i].Shift in bShift then
      keybd_event(ShiftKeys[i].VKey, MapVirtualKey(ShiftKeys[i].VKey, 0), KEYEVENTF_KEYUP, 0);
end;

A pozivaš je sa SimulateKey(Ord('C'), [ssCtrl]);

 
Odgovor na temu

XGhost

Član broj: 33279
Poruke: 331
*.dlp270.bih.net.ba.



+1 Profil

icon Re: Kopiranje u clipboard15.06.2016. u 20:21 - pre 94 meseci
Ovo kod mene nista ne radi, tj ne simulira kombinaciju tipki ctrl c a to mi treba.
Znam da skoro svaka komponenta ima podrsku za clipboard medjutim upravo mi to smeta u ovom slucaju
i treba mi samo nesto sto ce simulirati windows opciju ctrl c odnosno kopiranja bilo cega sto oznacim.
 
Odgovor na temu

XGhost

Član broj: 33279
Poruke: 331
*.dlp270.bih.net.ba.



+1 Profil

icon Re: Kopiranje u clipboard15.06.2016. u 20:36 - pre 94 meseci
Radi ovo tnx
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Kopiranje u clipboard

[ Pregleda: 1243 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.