Novo

Forum kao aplikacija na telefonu

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

  • 7 odgovora
  • 3.616 pregleda

Najnovija ↓

pomoc oko misa i linija 08.11.2004. u 13:14 · pre 267 meseci #1
1) kako da postavim misa na tacno odredjenu poziciju? probao sam sa mouse.CursorPos.x:=100; ali nece? zasto?

2) kako da napravim na formi, kao sto win ima, da se selektuje vise stvari, znaci, klikne se misem, i vuce se, a stvara se pravougaonik, i sve sto potpadne pod taj pravougaonik da je selektovano? mene ustvari interesuje samo pravougaoni,, ja sam kao nesto slicno uradio, ali prvi put je ostavljalo crno svuda za sobom, a drugo je mnogo treperelo :)

Pozdrav&hvala
Re: pomoc oko misa i linija 08.11.2004. u 13:48 · pre 267 meseci #2
1) WinAPI: SetCursorPos(x, y); x, y = screen coordinates

2) Self.Canvas.DrawFocusRect(r: TRect);

Otprilike ovako, na brzinu (da bi zaista radilo treba malo da se zezas s ovim top/bottom i left/right, ovako radi samo u slucaju da vuces misa s leva nadesno i odozgo prema dole):

Code:


var
  r: TRect;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 r.Top := y;
 r.Left := x;
 r.Bottom := y;
 r.Right := x;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if ssLeft in shift then
  begin
    self.Canvas.DrawFocusRect(r);
    r.Bottom := y;
    r.Right := x;
    self.Canvas.DrawFocusRect(r);
  end;
end;



Naravno, treba i na mouse up da se obrise selekcija.

ss.
Potpis
When something is hard to do, then it's not worth doing.
Re: pomoc oko misa i linija 09.11.2004. u 13:19 · pre 267 meseci #3
hvala za misa

ovo sa focusRect je otprilike to, ali nije tacno ono sto sam mislio! treba ja da napravim - nacrtam taj pravougaonik, trebaju ivice da mu budu u boji (plave boje) i deblje od ovog focusRecta... da li je to moguce napraviti? kao sto sam vec rekao, problem je samo u tomesto trepuce ako uradim na jedan nacin, a ako uradim na drugi, ostaje plavo po formi :( ? kako to da resim?
Re: pomoc oko misa i linija 09.11.2004. u 19:25 · pre 267 meseci #4
probaj da promenis Canvas.Pen.Width i Canvas.Pen.Color za okvir i Canvas.Brush.Color za boju unutrasnjosti. to je za obicne Rect, valjda radi i ovde :)
Potpis
Ride the rainbow, crack the sky

DIY gitare, pojacala i efekti www.diy-fever.com
Re: pomoc oko misa i linija 09.11.2004. u 20:33 · pre 267 meseci #5
Citat:
bancika: to je za obicne Rect, valjda radi i ovde


Na zalost nece da radi. FocusRect se crta sa XOR copy mode-om. Mozes crtati tako i obicni rect, ali XOR ce da ti zeza boje pravougaonika (u zavisnosti na kakvoj pozadini ih crtas).

Ako ti je bas stalo do plavih debelih linija, moraces da ih crtas nekako rucno. Za izbegavanje treperenja mozes pogledati twincontrol.doublebuffered property (delphi 7). Nisam siguran da ce ti raditi na svim windowsima, ako ne radi mozes uvek sam napraviti isto to pomocu winapija.

I da, windows posle toliko godina nema vsync koji je na kucnim racunarima postojao u doba spekija (i ranije), a koji bi ti sad tako dobro dosao.

ss.
Potpis
When something is hard to do, then it's not worth doing.
Re: pomoc oko misa i linija 09.11.2004. u 21:32 · pre 267 meseci #6
Po čemu crtaš plavi okvir? Ovo bi moglo da se uradi slično kako je 'sasa' na pisao samo što umjesto korištenja XOR moda za brisanje prijašnjeg pravougaonika uradiš invalidate za prethodni pravougaonik. Da bi izbjegao treperenje invalidate uradiš za svaku liniju posebno a ne za čitav pravougaonik tako da se ponovo iscrta samo područje gdje su linije. Ako invaliduješ linije u pixel tačno, treperenje nećeš primijetiti.
Re: pomoc oko misa i linija 11.11.2004. u 23:10 · pre 267 meseci #7
crtam bas po formi! ne moze da se brise u pixel tacno, probao sam, ako korisnik cimne misa brzo, win ne uhvati svaki pixel preko koga je mis stvarno presao, nego samo neke... zato ostaje trag iza pravougaonika! jos neko resenje? zaista me ubi ovo :(
Re: pomoc oko misa i linija 11.11.2004. u 23:37 · pre 267 meseci #8
To što Windows ne registruje pomak za svaki pixel nema veze sa ovim. Ti zabilješić zadnju registrovanu poziciju i kod sljedeće pozicije brišeš zadnju registrovanu tako da nema veze kako win registruje pomak. Pošalji malo koda koji si koristio.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme