[ XGhost @ 15.06.2016. 02:48 ] @
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.
[ savkic @ 15.06.2016. 11:22 ] @
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]);
[ XGhost @ 15.06.2016. 20:21 ] @
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.
[ XGhost @ 15.06.2016. 20:36 ] @
Radi ovo tnx