[Delphi] Blokada podwójnego kliknięcia.

0

Jak wyżej - jak zablokować podwójne kliknięcie w myszce.

0

Hym... Może opisz szerzej co i gdzie chcesz zablokować... Czy np dany komponenet czy może w danej aplikacji czy o co ci chodzi...
Bo normalnie to wystarczy obsłużyć DblClick...

0

Trudno mi wyjaśnaić. Mam procedurę na podwójne kliknięcie - jednak wywołuję ją przyciskiem, a podwójne kliknięcie chcę zablokować - tak żeby procedura się nie wykonała.

0
Yar napisał(a)

Trudno mi wyjaśnaić. Mam procedurę na podwójne kliknięcie - jednak wywołuję ją przyciskiem, a podwójne kliknięcie chcę zablokować - tak żeby procedura się nie wykonała.

 Jeżeli ja cię rozumiem to ty w DblClick wpisałeś procedurę krótą chcesz wykonać przez naciśnięcie przycisku a nie chcesz żeby się wykonała przez DblClick ?

Cholera  [!!!]  Napisz to jaśniej bo im częściej to czytam tym mniej z tego rozumiem.

jak napiszesz o co ci chodzi to ja ci napisze jak to zrobić - inaczej nie da rady...

0

OK
Mam komponent stringgrid - w zdarzeniu - on double click wykonuję jakiś kod.

Wiemy że chcąc raz kilknąć - może się zdarzyć że niechcący klikniemy 2.

Dlatego chcę zablokować podwójne kliknięcie w zdarzeniu on click.

Kod wykona mi się poprzez naciśnięcie guzika
begin
StringGrid1BdlClick(Stringrid1);
end;

Trochę to zagmatwane:)

0

//Deklaracja zmiennych globalnych
VAR
clic1, clic2:boolean;


//w dblclick
Begin
IF clic2 = true Then
    Begin
    ..............//Twój kod
    End;

//w onclick
   Begin
    clic1:=true;
    clic2:=False;
     .........//Twój kod
    End;

   I po co tyle krzyku ?    ;P
0

Albo ja nie załapałem czegoś istotnego, albo Twoje rozumowanie jest całkiem pozbawione sensu. Skoro nie chcesz wykonywać Twojego kodu za pomocą podwójnego kliknięcia to nie wsadzaj go do tego zdarzenia. Zrób sobie procedurę, która będzie przyjmować jako parametr wskaźnik do TStringGrid i ją wywołuj z guzika.

0

OK - dzięki za pomoc - czasem tempota mi oczy zasłania;(

0
Bula napisał(a)

Albo ja nie załapałem czegoś istotnego, albo Twoje rozumowanie jest całkiem pozbawione sensu. Skoro nie chcesz wykonywać Twojego kodu za pomocą podwójnego kliknięcia to nie wsadzaj go do tego zdarzenia. Zrób sobie procedurę, która będzie przyjmować jako parametr wskaźnik do TStringGrid i ją wywołuj z guzika.

  Hehehehe Ale komedia Bula co ty gadasz ....

Po co ci wskaźnik? chcesz wykonać kod po naciśnięciu przycisku to wykonujesz go kiedy? - po naciśnięciu przycisku - wkaźnik jest niepotrzebny
A poza tym to jemu chodzi raczej o coś innego - on chce żeby ten kod się raz wykonał poprzez dblClick ale później żeby został czasowo zablokowany... (jeżeli dobrze rozumiem)

0

irek: wszystko zależy od tego do czego potrzebuje tej procedury. Jeżeli do operacji na StringGrid'zie to wypadałoby pokazać na którym właśnie poprzez ten wskaźnik do niego, przekazywany w procedurze. Zauważ, że on chce wykonać kod w ten sposób: w OnClick guzika wywołuje StringGrid1DblClick. Sam do końca nie rozumiem o co autorowi chodziło. Ja myślałem o czymś takim:

procedure RobCos(sg: TStringGrid);
begin
// kod operujący na sg
end;

procedure Button1Click(Sender: TObject);
begin
RobCos(StringGrid1);
end;
0

Hym... No spoko ale wiesz po co sobie utrudniać życie....
StringGrid jest identyfikowany po nazwie tak?
więc po co przekazywać wskaźnik? jeżeli tak naprawdę nie chcemy obsłużyć dblclick a jedynie coś wykonać w taki sposób jak by dblclic wcale nie było...
czyli

procedure TForm1.Button1Click(Sender: TObject);
begin
With StringGrid1 do
    Begin




    End;
end;

W każdym razie przyznam ci jedno - ja też nadal nie rozumiem o co autorowi chodziło - niezły galimatias...

0

Wyobraź sobie, że mamy więcej niż jeden StringGrid'y. Będziesz pisał:

if cos then
with StringGrid1 do
// Tutaj może być baaardzo długi kod
if cos_jeszcze then
with stringGrid2 do
// Tutaj to samo co wyżej

Ja osobiście wolę:

if cos then RobCos(StringGrid1); // tak jest krócej
if cos_jeszcze then RobCos(StringGrid2); // procedura ma długie ciało

Po prostu lubię mieć taki porządek.

0
Bula napisał(a)

Wyobraź sobie, że mamy więcej niż jeden StringGrid'y. Będziesz pisał:

if cos then
with StringGrid1 do
// Tutaj może być baaardzo długi kod
if cos_jeszcze then
with stringGrid2 do
// Tutaj to samo co wyżej

Ja osobiście wolę:

if cos then RobCos(StringGrid1); // tak jest krócej
if cos_jeszcze then RobCos(StringGrid2); // procedura ma długie ciało

Po prostu lubię mieć taki porządek.

Oczywiście masz rację ale w tym przypadku ja bym to StringGrid1 i StringGrid2 przekazał jako prarametry funkcji (typu String) które przekazują nazwę obiektu a nie adres pamięci w jakim owy obiekt się znajduje.... i tylko o to mi chodziło ;

0

No to my doszliśmy już do konsensusu. Pozostało się jeszcze dowiedzieć o co dokładnie autor pytał :)

0
Bula napisał(a)

No to my doszliśmy już do konsensusu. Pozostało się jeszcze dowiedzieć o co dokładnie autor pytał :)

:D No to sobie poczekamy ;)

0

i w ten sposob powstala cala powiesc, o tym co moze chce ale nie koniecznie musi pytacz :P.

0

Fajny watek - nie ma co :-)

Ja bym obstawal za tym, ze autor juz otrzymal odpowiedz na swoje pytanie.
A zapewne chodzilo mu o to, ze mial oprogramowana procedure w dwukliku, ale tylko po to, zeby wywolywac ja przy kliknieciu na jakis button. I chcial zablokowac jej wykonanie przy dwukliku :)
Zreszta swoj pomysl stosownie skomentowal (autor znaczy).

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