Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 3 odgovora
  • 1.902 pregleda

Najnovija ↓

Kopiranje u clipboard 15.06.2016. u 03:48 · pre 126 meseci #1
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.
Re: Kopiranje u clipboard 15.06.2016. u 12:22 · pre 126 meseci #2
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]);
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: Kopiranje u clipboard 15.06.2016. u 21:21 · pre 126 meseci #3
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.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme