Bufor z Windowsa do Edit

dział ogólny

Bufor z Windowsa do Edit

Nowy postprzez mirut » czwartek, 18 wrzeÅ›nia 2008, 12:11

Witam!

No więc problem mam taki ze chciałbym aby po uruchomieniu programu czy też przywróceniu go z paska w Edita wpisywało mi bufor z systemu. Niestety coś źle robię ponieważ w OnShow w formie wrzucenie takiego kodu nic nie daje:
Kod: Zaznacz cały
Edit2->Clear();
Edit2->PasteFromClipboard();


JakieÅ› rady ?

Pozdrowienia :)

Ps. Szkoda że pierwsze forum padło...dużo info tam jest :)
Avatar użytkownika
mirut
Bladawiec
Bladawiec
 
Posty: 6
Dołączył(a): czwartek, 18 września 2008, 11:55
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: Bufor z Windowsa do Edit

Nowy postprzez Cyfrowy Baron » czwartek, 18 wrzeÅ›nia 2008, 15:17

Zdarzenie OnShow formularza jest wywoływane tylko raz po jego tworzenia, czyli najpierw jest wywoływane zdarzenie OnCreate a dopiero potem OnShow, różnicca jest taka, że zdarzenie OnCreate jest wywoływane dla jeszcze nie utworzonego formularza, a zdarzenie OnShow gdy formularz jest już utworzony i jest właśnie wyświetlany. Innym przykładem moze być systuacja w której formualarz zostaje ukryty poprzez np. funkcje Hide(), a potem jest ponownie wyświetlany np. funkcją Show() lub ShowModal(), jak widzisz to zdarzenie jest wywoływane tylko do pokazania formularz, czyli gdy jest niewidoczny, anie zminimalizowany. To tak w uproszczeniu.
Gdy przywołujesz program z paska zadań lub z SysTray'a to nie towarzyszy mu zdarzenie OnShow, gdyż formularz jest już wyświetlany.
Musisz posłużyć się zdarzeniem OnRestore, formularz jednak tego zdarzenia nie posiada. Można posłużyć się mapą komunikatów i przechwytywać komunikat przywrócenia, ale nie wiem dokładnie o jaki komunikat chodzi (SC_RESTORE - działa tylko na maksymalizację) dlatego proponuję umieścić na formularzu komponent TApplicationEvents (zakładka Additional), następnie tworzysz dla tego komponentu zdarzenie OnRestore i tam umieszczasz swój kod:

Kod: Zaznacz cały
void __fastcall TForm1::ApplicationEvents1Restore(TObject *Sender)
{
Edit2->Clear();
Edit2->PasteFromClipboard();
}


Ale uwaga! To zdarzenie jest wywoływane nie tylko gdy przywracasz program z paska zadań, ale również wtedy gdy przywracasz okno z maksymalizacji.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Bufor z Windowsa do Edit

Nowy postprzez mirut » czwartek, 18 wrzeÅ›nia 2008, 22:28

No i nie dziła...nawet nie wiem co mogłem zrobić źle... w sumie nawet kiedy umieściłem ten kod w OnShow w Formie to i tak jak mam w buforze coś to nie chce działać podczas uruchomienia.
Avatar użytkownika
mirut
Bladawiec
Bladawiec
 
Posty: 6
Dołączył(a): czwartek, 18 września 2008, 11:55
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: Bufor z Windowsa do Edit

Nowy postprzez Cyfrowy Baron » piÄ…tek, 19 wrzeÅ›nia 2008, 08:59

Funckcja PasteFromClipboard() nie obsługuje jakiegoś tam bufora lecz schowek - nie wiem co ty z tym buforem.

Oto prosty kod:

Kod: Zaznacz cały
//---------------------------------------------------------------------------
void __fastcall TForm1::ApplicationEvents1Restore(TObject *Sender)
{
Edit1->Clear();
Edit1->PasteFromClipboard();
}
//---------------------------------------------------------------------------


A tutaj program, który z tego kodu korzysta:
Schowek.rar


Jeżeli skopiujesz jakiś niesformatowany tekst - bo Edit tylko taki tekst obsługuje - to zostanie ona umieszczony w polu Edit1.

A co ty właściwie chcesz umieścić w tym polu Edit?!
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Bufor z Windowsa do Edit

Nowy postprzez mirut » niedziela, 21 wrzeÅ›nia 2008, 12:54

No dobra sorki za ten bufor, no ogólnie ze schowka. No np z jakiegoś tam notatnika jakiś tekst jak kliknę "kopiuj" i włączę mój program to chce żeby wrzucało mi to co jest w schowku do edita, a dokładniej do StringGrida. Przed zrobieniem menu z prawego przycisku myszy na stringgridzie było standardowe menu w którym było kopiuj, wklej itd. ale teraz mam moje menu i z tego co wyczytałem trzeba najpierw schowek do edita wrzucić a potem z edita do komórki stringgrid. No i mam ten sam kod co Ty ale u mnie nie działa... jeszcze nie wiem dlaczego ale dojdę kiedyś do tego.
Avatar użytkownika
mirut
Bladawiec
Bladawiec
 
Posty: 6
Dołączył(a): czwartek, 18 września 2008, 11:55
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: Bufor z Windowsa do Edit

Nowy postprzez Cyfrowy Baron » niedziela, 21 wrzeÅ›nia 2008, 13:28

Ale czy program który umieściłem w załączniku postu działa, czy też nie?!

Sugeruję zapoznać się z poradą: Obsługa schowka.

Do obsługi schowka nie jest wcale potrzebny obiekt Edit, można korzystać bezpośrednio z klasy TClipboard.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Bufor z Windowsa do Edit

Nowy postprzez mirut » niedziela, 21 wrzeÅ›nia 2008, 15:48

Tak działa, jak włączyłem ten programik i zrzuciłem na pasek, skopiowałem jakiś tekst do schowka i przywróciłem Twój programik to w edicie pojawił się ten skopiowany tekst :) czytam teraz tego linka z Twojej strony ...przekoduje go na mój język mózgowy i zobaczymy co z tego wyjdzie :)
Avatar użytkownika
mirut
Bladawiec
Bladawiec
 
Posty: 6
Dołączył(a): czwartek, 18 września 2008, 11:55
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: Bufor z Windowsa do Edit

Nowy postprzez mirut » niedziela, 21 wrzeÅ›nia 2008, 20:21

Ok wszytko działa :) nie ma to jak w edicie włączyć opcję"Only Read" :P
Avatar użytkownika
mirut
Bladawiec
Bladawiec
 
Posty: 6
Dołączył(a): czwartek, 18 września 2008, 11:55
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: Bufor z Windowsa do Edit

Nowy postprzez Cyfrowy Baron » poniedziaÅ‚ek, 22 wrzeÅ›nia 2008, 09:08

Funkcja OnlyRead przestawia obiekt w tryb tylko do odczytu, co to ma wspólnego z kopiowaniem zawartości schowka, zwracam Twoją uwagę na fakt, że w moim przykładowym programie Edit nie pracuje w trybie tylko do odczytu. Świetnie, że to już Tobie działa, ale może się okazać, że to rozwiązuje problem tylko na chwilę, gdyż przyczyna tkwi chyba w czymś innym i dopóki nie ustalisz prawdziwej przyczyny, to w dalszej pracy nad programem, problem może powrócić, a nawet się nawarstwiać.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przeglÄ…da forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 30 gości

cron