Zmienianie rozmiaru kontrolki podczas działania programu

Odpowiedz Nowy wątek
2019-05-14 12:04
0

Witam, piszę program w windows forms i zastanawiam się jak zrobić funkcjonalność aby po złapaniu za krawędź kontrolki dało się zmienić jej rozmiar. Byłoby najlepiej żeby taką rzecz dało się zrobić podczas działania programu.

Pozostało 580 znaków

2019-05-14 12:15
1

Najprostszym rozwiązaniem byłoby chyba stworzenie kontrolki użytkownika zawierająca kontrolkę docelową i jakiś przycisk/panel który przy przytrzymaniu przycisku myszki po prostu sprawdzał jak zmienia się pozycja kursora i na podstawie tego skalował docelową kontrolkę ale to jest dosyć podstawowe rozwiązanie :/


./Sup ^-^

Pozostało 580 znaków

2019-05-14 12:23
1

Dokładnie. Kiedyś robiłem coś takiego w Delphi. Stworzyłem sobie kontrolkę o nazwie TResiser, która przyjmowała kontrolkę, którą miała zawiadować.
Cały jej wygląd to 6 malutkich paneli takich 1x1, czy 2x2 piksele. Odpowiednie panele miały odpowiedni kursor (np. górny lewy miał kursor ResizeNE, czy jak on tam się nazywa). Odpowiednie panele miały też odpowiednio oprogramowane mouse move. Jeśli był wciśnięty przycisk, to wtedy panel podążał za kursorem myszy. Jednocześnie zmieniał rozmiar kontrolki, za którą był odpowiedzialny.

Ale czy jak na tego Twojego resizera nałożyłeś np. button, który zasłaniał cały obszar swojego rodzica, to czy eventy myszy nie były przechwytywane przez tego buttona, przez co te małe panele w rogach nie miały okazji wykonać swojego zadania? Jak to rozwiązałeś? - cerrato 2019-05-14 12:48
To nie tak. Masz resizera, który ma właściwość Control. Resizer rysuje się jakby na zewnątrz tej kontrolki. Np. górny lewy panel w pozycji: x: control.left - 2, y: control.top - 2 Albo brałem pozycję względem rodzica, już teraz tego nie pamiętam, bo to było wieeeeki temu. Ale jest na torry.net. Popatrz sobie: https://torry.net/vcl/sizers/sizers/TJuhasResizeNodes.zip - Juhas 2019-05-14 13:55
OK, zrozumiałem, że resizera dajesz pod spód, a nie na wierzch. Teraz to ma więcej sensu ;) - cerrato 2019-05-14 14:36

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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