Błąd przy OnMouseDown i mbLeft

0

Problem dotyczy tego że przy metodzie OnMouseDown TButton:

if Button = mbLeft then
 begin
  Form1.Show;
 end;

aplikacja wywala błąd o którym nigdzie nic nie ma i ustawia kursor zaraz po mbLeft.

[Error] Unit1.pas(1283): Incompatible types: 'TMouseButton' and 'TDotMatrixBorder'

Dziwi mnie fakt że kiedy stworzę nową aplikację to kod ten dla TButtona działa.
Może tą funkcję blokować jakaś inna linia kodu? Bo siedzę nad tym już dosyć długo i nie mam pojęcia jak to ugryźć ;/</quote></ort>

0
Controls.mbLeft
0

a mógłbyś napisać coś więcej jak to zastosować? bo jak bym tego nie używał wywala błąd że oczekiwano '[' a nie '.' ;/

0

ech podstaw się poucz

if Controls.mbLeft in Button then
0

umiem podstawy ale w tu jest coś dziwnego, pierwszy raz się z tym spotykam. Program dalej nie działa, ten sam błąd że oczekiwano '[' a znaleziono kropkę. Jakiś inny pomysł?

0

dobra, bo wcześniej nie zwróciłem uwagi - a co to jest za zmienna Button?? OnKeyDown tego nie ma

0

kurczę, ja też strzeliłem gafę, chodziło mi o metodę OnMouseDown. Button jest typu TMouseButton oczywiście

0
  1. znajdź u siebie w uses moduł Controls i przesuń go na sam koniec, jako ostatni moduł
  2. if mbLeft = Button then
0
Misiekd napisał(a)
  1. znajdź u siebie w uses moduł Controls i przesuń go na sam koniec, jako ostatni moduł

Nie znam tego triku ?

0
Opi napisał(a)
Misiekd napisał(a)
  1. znajdź u siebie w uses moduł Controls i przesuń go na sam koniec, jako ostatni moduł

Nie znam tego triku ?

Podobny trik stosuje się z modułem System lub Windows. Z tym, że one powinny być jako pierwsze. Chociaż przez kilka lat tylko raz to musiałem użyć. Ale od tego czasu moduł Windows zawsze umieszczam jako pierwszy :)

0
Opi napisał(a)

Nie znam tego triku ?

[Error] Unit1.pas(1283): Incompatible types: 'TMouseButton' and 'TDotMatrixBorder'
wynika z tego, że jakiś inny moduł ma typ mbLeft. Rozwiązania są dwa - jeden to dodać do mbLeft moduł, z którego pochodzi, czyli Controls.mbLeft. Tylko że tu Controls to zmienna formy i nie zatrybi - błąd "błąd że oczekiwano '[' a nie '.' ". Drugi to dodać moduł z prawidłową deklaracją typu na koniec - moduły z uses są przeszukiwane od końca.

Podobnie możesz się zdziwić jak masz w uses Graphic a później Windows i zadeklarujesz sobie zmienną typu TBitmap

0

Podziałało to przesunięcie modułu Controls ;) tyko zastanawia mnie fakt, dlaczego wcześniej wywalało błędy, przecież z punktu widzenia kompilatora powinno mu być to obojętne w którym miejscu jest zapisany moduł.

EDIT // Już wiem dlaczego ;) Dzięki :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.