Autor Téma: Memo  (Přečteno 285 krát)

Offline Viktor Marek

  • Nováček
  • *
  • Příspěvků: 45
  • Karma: 0
    • Verze Delphi: Delphi 5
Memo
« kdy: 04-10-2017, 19:52:03 »
Z Formu1 volám Form2 na kterém je memo ve kterém je text. Po prolistování textu až nakonec zavřu Form2 a znovu jej otevřu a jsem na konci textu.

Jak dostat text při znovuotevření na začátek textu.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2872
  • Karma: 27
    • Verze Delphi: XE7 professional
Re:Memo
« Odpověď #1 kdy: 04-10-2017, 20:07:29 »
Citace
Z Formu1 volám Form2 na kterém je memo ve kterém je text. Po prolistování textu až nakonec zavřu Form2 a znovu jej otevřu a jsem na konci textu.
Z toho textu som trochu vedľa. Načo to je vlastne dobré? To prechádzanie robíš programovo, alebo užívateľ ručne? Lebo ak
  • programovo, tak ho ani nemusíš zobraziť.
  • to robí užívateľ, tak mu nemáš nič meniť >:(
Neviem aký máš zámer :(
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Viktor Marek

  • Nováček
  • *
  • Příspěvků: 45
  • Karma: 0
    • Verze Delphi: Delphi 5
Re:Memo
« Odpověď #2 kdy: 04-10-2017, 20:08:48 »
Uživatel ručně - omlouvám se za nepřesnou formulaci.

Offline Delfin

  • Plnoletý
  • ***
  • Příspěvků: 229
  • Karma: 9
    • Verze Delphi: 2009, Tokyo
Re:Memo
« Odpověď #3 kdy: 04-10-2017, 20:21:24 »
Napr. v udalosti OnShow formu se da spachat nasledujici (nastavit caret na pozici 0 a zascrollovat kontrolkou nahoru):

Kód: Delphi [Vybrat]
  1. procedure TChildForm.FormShow(Sender: TObject);
  2. begin
  3.   MyMemo.Perform(EM_SETSEL, 0, 0); // zrusime vyber (nastavime caret na pozici 0 s nulovym rozsahem vyberu)
  4.   MyMemo.Perform(WM_VSCROLL, MakeWParam(SB_TOP, 0), 0); // zascrollujeme na horni levou pozici
  5. end;

Nevim zda ma Delphi na tohle primo pro TEdit nejakou metodu. Napada me leda ScrollBy. Ta ale neresi pozici caret.

Napad samotny se mi z uzivatelskeho pohledu nelibi, protoze jak uz jsi byl varovan, rozbijes vyber a pozici jez si uzivatel muze prat nechat zachovan. Neboj ale, videl jsem horsi zverstva (kdy si napr. borec kopiroval data mezi procesy za pomoci clipboard).
« Poslední změna: 04-10-2017, 20:50:22 od Delfin »
A co chudinky ovce? Koupíš jim snad plovací vesty? Nebo jim nasadíš chůdy? Ještě lepší, kdybys je zkřížil s delfíny na ovce hopkavé!

Offline Delfin

  • Plnoletý
  • ***
  • Příspěvků: 229
  • Karma: 9
    • Verze Delphi: 2009, Tokyo
Re:Memo
« Odpověď #4 kdy: 04-10-2017, 20:53:34 »
Nevim zda ma Delphi na tohle primo pro TEdit nejakou metodu. Napada me leda ScrollBy. Ta ale neresi pozici caret.

Nevim zda ma Delphi na tohle primo pro TMemo nejakou metodu. Napada me leda ScrollBy. Ta ale neresi pozici caret.
A co chudinky ovce? Koupíš jim snad plovací vesty? Nebo jim nasadíš chůdy? Ještě lepší, kdybys je zkřížil s delfíny na ovce hopkavé!

Offline Viktor Marek

  • Nováček
  • *
  • Příspěvků: 45
  • Karma: 0
    • Verze Delphi: Delphi 5
Re:Memo
« Odpověď #5 kdy: 04-10-2017, 21:04:39 »
Díky za varování. V memu je jenom cosi jako nápověda k prográmku takže nehrozí nic z napsaného.

procedure TChildForm.FormShow ... mi kompilátor nebere, zkusím to vyřešít to simulací kláves CTRL + Home

Offline Delfin

  • Plnoletý
  • ***
  • Příspěvků: 229
  • Karma: 9
    • Verze Delphi: 2009, Tokyo
Re:Memo
« Odpověď #6 kdy: 04-10-2017, 21:18:58 »
Díky za varování. V memu je jenom cosi jako nápověda k prográmku takže nehrozí nic z napsaného.

procedure TChildForm.FormShow ... mi kompilátor nebere, zkusím to vyřešít to simulací kláves CTRL + Home

Jo no. Stejne jako s nejvetsi pravdepodobnosti MyMemo :) Napada me zda tu nemam psat pocestene (prip. svou lamanou spanelstinou). I kdyz ani to nicemu neprida. Nebo zkratka jen vetsim fontem ;D

Ne, ted vazne. Je to ukazka, neni to copy/paste. Nemam tuseni jak se u Tebe jmenuji komponenty ale pro napsani handleru udalosti OnShow si staci zajit do Object Inspector zalozky Events pro dany formular, 2x kliknout na polozku udalosti OnShow, a vlozit kod:

Kód: Delphi [Vybrat]
  1. MyMemo.Perform(EM_SETSEL, 0, 0); // zrusime vyber (nastavime caret na pozici 0 s nulovym rozsahem vyberu)
  2. MyMemo.Perform(WM_VSCROLL, MakeWParam(SB_TOP, 0), 0); // zascrollujeme na horni levou pozici

kde MyMemo nahradis za nazev komponenty kterou chces timto zpusobem vyresetovat (napr. Memo1). Kdyby jich bylo vic, na ruznych mistech aplikace, zvazil bych (v pripade ze Delphi nic podobneho nenabizi, o cemz vzhledem k Delphi 5 [???] bych dost silne pochyboval) vlastni komponentu (nebo tzv. interposer class).
« Poslední změna: 04-10-2017, 21:39:13 od Delfin »
A co chudinky ovce? Koupíš jim snad plovací vesty? Nebo jim nasadíš chůdy? Ještě lepší, kdybys je zkřížil s delfíny na ovce hopkavé!

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2872
  • Karma: 27
    • Verze Delphi: XE7 professional
Re:Memo
« Odpověď #7 kdy: 04-10-2017, 21:21:49 »
Excellent
Rated 1 time
Citace
procedure TChildForm.FormShow ... mi kompilátor nebere
To si opísal doslovne? ;D  V ďalšom máš upresnenie
Citace
Napr. v udalosti OnShowformu
Čiže to má byť v udalosti onShow formulára Form2
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline martinnr

  • Plnoletý
  • ***
  • Příspěvků: 127
  • Karma: 2
    • Verze Delphi: 7,2009,XE7
Re:Memo
« Odpověď #8 kdy: 05-10-2017, 08:19:09 »
OnShow proceduru samozrejme nevyrabas umelo, to je standardny event formularov. to si len lechas vytvorit definiciu dvojklikom na zalozke eventov pre form.
tam vloz :   
Memo1.SelStart := 0;

Offline Delfin

  • Plnoletý
  • ***
  • Příspěvků: 229
  • Karma: 9
    • Verze Delphi: 2009, Tokyo
Re:Memo
« Odpověď #9 kdy: 05-10-2017, 14:22:13 »
tam vloz :   
Memo1.SelStart := 0;

A zascrollovat?
A co chudinky ovce? Koupíš jim snad plovací vesty? Nebo jim nasadíš chůdy? Ještě lepší, kdybys je zkřížil s delfíny na ovce hopkavé!

Offline Viktor Marek

  • Nováček
  • *
  • Příspěvků: 45
  • Karma: 0
    • Verze Delphi: Delphi 5
Re:Memo
« Odpověď #10 kdy: 05-10-2017, 15:33:38 »
Díky Delfínovi to chodí jak má.

MyMemo.Perform(EM_SETSEL, 0, 0); // zrusime vyber (nastavime caret na pozici 0 s nulovym rozsahem vyberu)
MyMemo.Perform(WM_VSCROLL, MakeWParam(SB_TOP, 0), 0); // zascrollujeme na horni levou pozici


 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Jméno: E-mail:
Ověření:
Kolik je šest plus čtyři (slovem):