Clipboard, Combobox

0

Witam !

Mam dwa rózne pytania na ktore nie mogę uzyskać w żaden sposób odpowiedzi !

  1. Jak zapisać do combobox programowo na stałe wartośc itema ?
  2. Jak można określić w danej chwili, że właśnie w tym momencie zawartość
    pamięci podręcznej clipboard już nie jest pusta ?

Dziękuję z góry za pomoc.

0
  1. programowo na stale?
    daj dodawanie itemow w OnCreate Formy :)

  2. mozesz przechwytywac message'e gdy zmienia sie zawartosc schowka

private
hNast : HWND;
procedure KolejkaObserwator_Zmiana(var Msg : TWMChangeCBChain); message WM_CHANGECBCHAIN;
procedure Schowek_Zmiana(var Msg : TWMDrawClipboard); message WM_DRAWCLIPBOARD;

procedure TForm1.KolejkaObserwator_Zmiana(var Msg: TWMChangeCBChain);
begin
if Msg.Remove = hNast then
hNast := Msg.Next
else
SendMessage(hNast, WM_CHANGECBCHAIN, Msg.Remove, Msg.Next);
Msg.Result := 0;

end;

procedure TForm1.Schowek_Zmiana(var Msg: TWMDrawClipboard);
begin
if (Clipboard.HasFormat(CF_TEXT)) then
begin
// tutaj cos robisz
end;
if hNast <> 0 then
SendMessage(hNast,WM_DRAWCLIPBOARD,0,0);
Msg.Result := 0;
end;

0

Dzięki !
Ad1.
Chodzi o to, że wartość itema ma być wpisana już po uruchomieniu programu (np. dowolny tekst). Muszę chyba zastosować jakąś prostą pamięć np. w pliku tekstowym, bo wprowadzony item programowo ...String.Add() nie "trzyma" po wyłączeniu programu.

Ad 2.
W tym przypadku coś te procedury nie działają. Nie rozumiem skąd i jaki sygnał mam otzymać żeby wiedzieć, że zmieniła się właśnie zawartość pamięci clipbord ?

0
  1. Combobox1.Items.LoadFromFile ? ;)

  2. masz racje, zapomnialem, ze trzeba to jeszcze zainicjowac (dawno sie tym nie bawilem :P)

w onCreate daj // badz gdzie inicjujesz
hNast := SetClipboardViewer(Handle);

a w OnDestroy
ChangeClipboardChain(Handle,hNast);

jak chcesz wiedziec dokladnie co to za sygnaly to poczytaj sobie o kuminikatach w windows :) w mega skrocie, gdy zmieni sie zawartosc schowka to twoj program zostanie o tym poinformowany

1 użytkowników online, w tym zalogowanych: 0, gości: 1