[Delphi] MDI jak zablokowac okienko

[Delphi] MDI jak zablokowac okienko
0

Mam dwa pytania:

  1. Kiedy tworze forme jako MDIForm
    i na nia wstawiam Form 2 i ustawiam MDIChild
    to podczas uruchamiania okno CHILD jest widoczne mimo ustawionego
    parametru visible:=false;
    jak sprawic by okienka sie nie otwieraly?

  2. kiedy otowrze guzikiem okienko jak sprawic zeby
    po ponownym wcisnieciu nie otworzylo sie ponownie to samo okno ?

Misiekd
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 12 lat
  • Postów:7923
0
masterO napisał(a)

Mam dwa pytania:

  1. Kiedy tworze forme jako MDIForm
    i na nia wstawiam Form 2 i ustawiam MDIChild
    to podczas uruchamiania okno CHILD jest widoczne mimo ustawionego
    parametru visible:=false;
    jak sprawic by okienka sie nie otwieraly?

poszukaj sobie o dynamicznym tworzeniu form

  1. kiedy otowrze guzikiem okienko jak sprawic zeby
    po ponownym wcisnieciu nie otworzylo sie ponownie to samo okno ?

a co się ma otworzyć?


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij
PI
  • Rejestracja:ponad 19 lat
  • Ostatnio:12 miesięcy
  • Postów:440
0

Daj sobie w menu:
Project-> Options-> zakładka "Forms"
I zaznacz sobie okienko dziecko przenieś go do Available forms (strzałeczką w bok )
wywołujesz okienko w następujący sposób:

Kopiuj
NazwaFormyDziecka:=TNazwaFormyDziecka.Create(Self);
NazwaFormyDziecka.ShowModal;
NazwaFormyDziecka.Free;

Co do tego żeby sie nie otwarło okienko to nie wiem o co dokładnie chodzi
ale jesli dobrze rozumiem to daj sobie w oncreate formy zmienną np.:

Kopiuj
var
Otwarte:boolean;

i w on Create formy dziecka dajesz

Kopiuj
Otwarte:=True;

a orzy wywoływaniu formy (np w przycisku)

Kopiuj
if not Otwarte then
begin
NazwaFormyDziecka:=TNazwaFormyDziecka.Create(Self);
NazwaFormyDziecka.ShowModal;
NazwaFormyDziecka.Free;
end;
0

Mam na mysli kiedy otwieram okienko CHILD to takich samych okienek tworzonych dynamicznie moza pootwierac duzo np z 10 a mi chodzi o to ze jak raz otworzysz i jeszcze raz wcisniesz otworz to samo okno to system zrobi focus na takie okno juz otwarte. zeby nie moznabylo otwierac (tworzyc dynamicznie) wiecej niz jedno takie samo okno

LU
  • Rejestracja:ponad 19 lat
  • Ostatnio:około 11 lat
0

Jeśli chcesz tworzyć kilka rodzajów okien potomnych (kilka różnych klas), wtedy wystarczy pobrać klasę tworzonego właśnie okna i sprawdzić, czy na liście już istniejących okien nie ma okna o takiej klasie.
Jeśli nie chcesz tworzyć różnych okien potomnych, to nie widzę w ogóle sensu tworzenia aplikacji MDI

0

jasen ze chce rozne okienka ale nie musza byc otwierane kilkakrotnie. ale gdzie jest ta lista ? jak ti wykorzystac spradzanie na takiej Liscie ?

LU
  • Rejestracja:ponad 19 lat
  • Ostatnio:około 11 lat
0

Każdy obiekt (klasa) w Delphi posiada pewne metody, dziedziczone z klasy TObject:

Kopiuj
function ClassName: ShortString;
function ClassNameIs(const Name: String): boolean;

Metoda pierwsza, jak pewnie się domyślasz, zwraca nazwę klasy w postaci krótkiego Stringa (np. TMDIChild), druga zaś mówi sama za siebie :>
Listę okien potomnych dla formy głównej (MainForm) programu uzyskasz poprzez właściwość MDIChildren - jest to zwykła tablica indeksowana od zera do ilości okien potomnych na formie głównej - 1. Wystarczy ułożyć stosowną pętelkę po tablicy i skorzystać z funkcji, które zamieściłem powyżej

statjacek
  • Rejestracja:ponad 19 lat
  • Ostatnio:prawie 16 lat
0
masterO napisał(a)

jasen ze chce rozne okienka ale nie musza byc otwierane kilkakrotnie. ale gdzie jest ta lista ? jak ti wykorzystac spradzanie na takiej Liscie ?

Nie barzdo ciebie rozumiem. Czy o to tobie chodzi, że jak np wczytujesz jakiś dokument np. tekstowy do jednego okna to nie chcesz aby ten sam dokument wcztał się do drugiego okna bo jest już otwarty? Jeśli tak to pobieraj sobie ściężkę do każdego pliku co otwierasz do jakiejś zmiennej. Następnie przed otwarciem nowego pliku spawdzaj czy jest już ta ścieżka.


0

Tak chodzi miedzy innymi o to co mowisz ze ma byc otwarte tylko jedno okienko potomne ale nie dotyczy to tylko dokumentow np mam okno setup i tam ustwaisz rozne parametry i nie chce zeby okienko setup otworzylo sie drugi raz. musze powalczy teraz z przedmowca z tym co pisal. dziekuje za wskazowki mam nadz ze sie uda .

LU
  • Rejestracja:ponad 19 lat
  • Ostatnio:około 11 lat
0

do tworzenia okien setupów i innych takich nie potrzeba tworzyć aplikacji MDI. Jest to jeden z podstawowych błędów początkujących programistów . MDI służy raczej do otwierania/tworzenia/edycji kilku dokumentów tego samego typu, bez potrzeby odpalania kilku kopii programu. Da się oczywiście również dokonywać edycji różnych typów dokumentów, wtedy należy stworzyć odpowiednie klasy, dla form potomnych (Child). Jeśli potrzebujesz okienek do wprowadzania jakichś ustawień i nie przewidujesz edycji wielu dokumentów naraz, możesz spokojnie użyc aplikacji SDI zamiast MDI i ręcznie pododawać do niej potrzebne formatki.

statjacek
  • Rejestracja:ponad 19 lat
  • Ostatnio:prawie 16 lat
0
masterO napisał(a)

Tak chodzi miedzy innymi o to co mowisz ze ma byc otwarte tylko jedno okienko potomne ale nie dotyczy to tylko dokumentow np mam okno setup i tam ustwaisz rozne parametry i nie chce zeby okienko setup otworzylo sie drugi raz. musze powalczy teraz z przedmowca z tym co pisal. dziekuje za wskazowki mam nadz ze sie uda .

Zrób sobie jakąs zmienną globalną np. czy_otwarto typu boolean. Przy otwarciu okienka ustaw ją na true a przy zamykaniu ustawiaj ją na false. Przed otwarciem okienka sparwdzaj czy zmienna czy_otwarto jest ustawiona na false - jeśli jest to otwieraj okienko


0

Jesli nie poradze sobie z poprzednim rozwiazaniem z funkcjami wbudowanymi w metody MDIChild to zostaje mi to jedyne roziwazanie. Bede probowal stosoac tamte funkcje.

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)