poruszający się panel, który zamazuje tło

0

Witam, mam następujący problem, wykonałem aplikacje do której jako tło wstawiłem image i dla estetyczności a przy okazji fajnego bajeru zrobiłem zakładkę która po wjechaniu na nią myszką wysuwa się (zakładka = panel) i tutaj pojawił się problem, ponieważ podczas wysuwania zamazuje się moje tło(czyt. obrazek) oraz wszystko to co jest na panelu. Co można zrobić aby zlikwidować ten problem ??

jeżeli nie wszystko jest zrozumiałe to mogę wysłać przykładowy program, która ma taki błąd.

0

Zastosuj

Doublebuffered := True;

zarówno dla TPanel, TImage jak i TForm na której to wszystko masz ułożone.

0

Wkleiłem tą komendę i niestety nie działa :( wkleiłem w create w formie i w tych panelach i image w click, nie wiem czy dobrze ?? może ma ktoś jeszcze jaką propozycję ?

0

Skoro "nie działa" to mówi się "trudno".

0

przepraszam kAzek, że jestem początkującym programistą, dostałem polecenie żeby zastosować to polecenie, to zinterpretowałem to tak, że po prostu muszę napisać form1.Doublebuffered := True; w formcreate, niestety nie jestem jasnowidzem abym wiedział gdzie to wkleić bez posiadania takiej wiedzy. jeżeli Ty kAzek wszystko już na samym początku wiedziałeś to w takim razie przepraszam, że się pytam, ja nie jestem aż taki fajny i niektórych rzeczy nie wiem, i dlatego właśnie pytam, oczekując podpowiedzi i szacunku.

kod zamieszczę około godziny 15/16, bo teraz niestety nie mam do niego dostępu.

0

Nie masz co się obrażać, bo tylko napisałem co prawdopodobnie zrobiłeś (i z tego co napisałeś wyżej miałem rację). Czekamy na kod to pomyslimy nad rozwiązaniem problemu.

0

tutaj jest przykładowy program, który pokazuje mój problem, jest on w sumie napisany na szybko, ponieważ tego głównego nie mogę pokazać, ale chodzi o to samo w obydwu programach, zamazuje się stringgrid i image, jakbyście mogli powiedzieć jakiej komendy użyć i gdzie ją wpisać to byłbym bardzo wdzięczny :)

0

U mnie zwykłe Application.ProcessMessages; przed Sleep załatwia sprawę (oczywiście i pokazywaniu i ukrywaniu). Sprawdź czy pomogło.

0

dziwne, ale u mnie nic się nie zmienia, dalej się tak zamazuje.

1

Na pewno dobrze wkleiłeś?
W OnCreate formy ustawiasz pokaz_panel na True i coś takiego:

procedure TForm1.Label1Click(Sender: TObject);
var
  i: integer;
begin
  if (pokaz_panel=True) then
  begin
    for i:= 0 to 200 do
    begin
      Panel1.Top:= Panel1.Top - 1;
      Panel2.Top:= panel2.Top - 1;
      Application.ProcessMessages;
      Sleep(10);
    end;
    Label1.Caption := 'Ukryj panel';
  end
  else
  begin
    for i:= 0 to 200 do
    begin
      Panel1.Top:= Panel1.Top + 1;
      Panel2.Top:= panel2.Top + 1;
      Application.ProcessMessages;
      Sleep(1);
    end;
    Label1.Caption := 'Wysuń panel';
  end;
  pokaz_panel:= not pokaz_panel;
end;
0

już wiem dlaczego mi nie działał, ponieważ ja jeszcze na panelu miałem label i jak kliknąłem w panel to nie działało, bo komendę wkleiłem do label, ale w każdym razie problem już rozwiązany :) Bardzo dziękuję za pomoc :)

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