Tabbednotebook

bilobil
  • Rejestracja:około 15 lat
  • Ostatnio:ponad 14 lat
0

Pomocy!!! Użyłem komponenty Tabbednotebook do wprowadzania parametrów komputerów do bazy danych. na górze zakładki to np. parametry dysku, grafiki, procesora. Mam pewnien problem bo jak umieąciłem kilka labelów ,editów itp to po pewnym czasie te labely znikają. Wie ktoś o co chodzi jakiś niedopracowany ten komponenty. Może polecicie coś podobnego do takiego zastosowania??


IMPOSSIBLE IS NOTHING
olesio
  • Rejestracja:około 17 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Szczecin
  • Postów:4191
0

Też kiedyś używałem tego, ale dawno, bo jeszcze pod Delphi 3. W nowszych nie powinno być problemów
z komponentem PageControl (zakładka Win32) i to właśnie ów PageControl mogę Tobie polecić do użycia.


Pozdrawiam.
bilobil
  • Rejestracja:około 15 lat
  • Ostatnio:ponad 14 lat
0

a jak dodać tam strone/zakładke na górze??


IMPOSSIBLE IS NOTHING
olesio
  • Rejestracja:około 17 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Szczecin
  • Postów:4191
0

Prawym klawiszem klikasz na PageControl i wybierasz "New Page". A poprzez kod można tak:

Kopiuj
procedure TForm1.Button1Click(Sender: TObject);
var
  I: integer;
  Memo: TMemo;
  TabS: TTabSheet;
begin
  I := 0;
  TabS := TTabSheet.Create(Self);
  TabS.PageControl := PageControl1;
  repeat
    I := I + 1;
  until FindComponent('Zakladka' + IntToStr(I)) = nil;
  TabS.Name := 'Zakladka' + IntToStr(I);
  TabS.Tag := I;
  PageControl1.Pages[PageControl1.PageCount - 1].Caption := Format('Strona %d', [I]);
  PageControl1.ActivePage := TabS;
  Memo := TMemo.Create(Self);
  Memo.Top := 10;
  Memo.Left := 8;
  Memo.Parent := TabS;
  Memo.Name := 'Memo' + IntToStr(I);
  Memo.Text := Memo.Name;
end;

Usuwanie zakładek wykorzystując własność Tag zakładki, która ustawiana jest we wcześniejszym kodzie:

Kopiuj
procedure TForm1.Button2Click(Sender: TObject);
begin
  if PageControl1.PageCount = 0 then
  begin
    Exit;
  end;
  TTabSheet(FindComponent('Zakladka' + IntToStr(PageControl1.ActivePage.Tag))).Free;
end;

Pozdrawiam.
bilobil
  • Rejestracja:około 15 lat
  • Ostatnio:ponad 14 lat
0

Poradziłem sobie z tymi znikającymi labelami. Musiałem wszystkie labele wsadzić w groupboxy bo inaczej znikały :/


IMPOSSIBLE IS NOTHING
bilobil
  • Rejestracja:około 15 lat
  • Ostatnio:ponad 14 lat
0

A jeszcz etakie pytanie jak zablokować zakładki w tym tabbednotebook tzn żeby jedna była aktywna a reszta aktywowała się po kliknięciu na button?


IMPOSSIBLE IS NOTHING
olesio
  • Rejestracja:około 17 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Szczecin
  • Postów:4191
0

Poniższy kod jest dla zakładki drugiej w kolejności, ale powinieneś zrozumieć ideę.

Kopiuj
//...
  public
    MoznaWejscNaZakladke : boolean;
  end;
//...
procedure TForm1.FormCreate(Sender: TObject);
begin
  MoznaWejscNaZakladke := False;
end;

procedure TForm1.TabbedNotebook1Change(Sender: TObject; NewTab: Integer;
  var AllowChange: Boolean);
begin
  if NewTab = 1 then
  begin
    AllowChange := MoznaWejscNaZakladke;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  MoznaWejscNaZakladke := True;
end;

Pozdrawiam.
bilobil
  • Rejestracja:około 15 lat
  • Ostatnio:ponad 14 lat
0

a nie mozna tego jakoś prościej zrobić ?? Jakas własność tego tabbednotebook? :/


IMPOSSIBLE IS NOTHING
olesio
  • Rejestracja:około 17 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Szczecin
  • Postów:4191
0

Może jakoś się da, ale ja zauważyłem tylko taki sposób. Nie widzę w nim nic trudnego.
Nawet jak masz wiele zakładek i dodajesz je dynamicznie to w np. obiekcie typu TList
możesz przechowywać jakby listę booleanów i zmieniać te wartości na liście - po czym
w zależności od wartości True lub False pozwalać na ustawienie danej zakładki Lecz to
chyba bardziej skomplikowany sposób niż ten. który podałem powyżej - według mnie.


Pozdrawiam.
OZ
  • Rejestracja:około 19 lat
  • Ostatnio:ponad 12 lat
0

Nie chciałem zakładać nowego tematu, bo też mam problem z TabbedNotebook'iem, aczkolwiek inny.
Być może problem jest banalny, ale jego rozwiązanie znacznie ułatwi mi życie/programowanie.
Mam kilkanaście zakładek w TabbedNotebook'u, których zawartość jest niemalże identycza, jeśli chodzi o wygląd zewnętrzny. Gdy więc poukładam sobie w jednej zakładce wszystkie gridy, buttony i inne komponenty, to w drugiej muszę zrobić dokładnie to samo, z tym, że te tak samo wyglądające komponenty będą inaczej oprogramowane. No i najprościej byłoby zaznaczyć wszystko co jest w zakładce, ctrl+c, wejść do nowej, pustej zakładki i ctrl+v. Problem w tym, że po kliknięciu ctrl+v całość wkleja mi się w zupełnie innej zakładce, niż ta, w której bym chciał. I co najgorsze - nigdy nie wiadomo w której zakładce się to wklei. Ma ktoś jakieś rozwiązanie na to?

zajcev
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad 7 lat
0

zrób z tego jedną forme i ją dokuj na każdej zakładce

oForm := TfmJakasForma.Create(Self);
oForm.ManualDock(tsJakasZakladka);
oForm.Align := alClient;
oForm.Show();
OZ
  • Rejestracja:około 19 lat
  • Ostatnio:ponad 12 lat
0

Dobrze rozumiem ideę dokowania, że chodzi o to, że fizycznie te same komponenty w zależności od wybranej zakładki są inaczej oprogramowane?

Jeśli tak, to odpada, bo te zakładki u mnie niestety nie są identyczne, ale "niemalże identycznie" (jak napisałem w poprzedni poście). Gridy będą miały inne kolumny, przyciski inne captiony, w jednej zakładce będą jakieś DBEdity, a w innej już nie... Na pierwszy rzut oka wszystko jest podobne, ale tak na prawdę nie jest. Jeśli udałoby mi się jednak skopiować całość i wkleić do innej zakładki, to nie musiałbym tworzyć każdego grida od nowa, ustawiać jego rozmiarów, kolorów, położenia itp. od nowa. Ewentualnie po wklejeniu dokonywałbym małych poprawek typu dołożenie nowej kolumny, czy zmiana szerokości innej kolumny...

zajcev
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad 7 lat
0

dokowanie.. można to wyjaśnić na zasadzie komponentow.. komponenty tez kładziesz kilka razy.. formy tez możesz.. tyle ze poprzez dokowanie FORM lub kładzenie ramek.. jak coś zmienisz na ramce to sie zmieni wszędzie gdzie ta ramka została użyta.. to taki portal położony na formie do innej formy..

jak sa rozne to nie ma wyboru.. jedynie kopiowanie..

a problem kopiowania prawdopodobnie wynika z tego ze po zaznaczeniu komponentów na jednej zakładce nie uwzględniasz ich parentów..

przykład:
dwa panele, na każdym przycisk. zaznaczasz przyciski, ctrlC ctrlV i wszystko jest inaczej. Dlatego ze przyciski pamiętają swoja pozycje w relacji z panelami i po wklejeniu maja te same wartości Left i Top ale w relacji do parenta na którym je wklejasz..

OZ
  • Rejestracja:około 19 lat
  • Ostatnio:ponad 12 lat
0
zajcev napisał(a)

a problem kopiowania prawdopodobnie wynika z tego ze po zaznaczeniu komponentów na jednej zakładce nie uwzględniasz ich parentów..

przykład:
dwa panele, na każdym przycisk. zaznaczasz przyciski, ctrlC ctrlV i wszystko jest inaczej. Dlatego ze przyciski pamiętają swoja pozycje w relacji z panelami i po wklejeniu maja te same wartości Left i Top ale w relacji do parenta na którym je wklejasz..

Tak się składa, że żaden z komponentów nie ma tam parenta. Jedynym ich wspólnym parentem jest TabbedNotebook. W zakładce "A" tego TabbedNotebook'a leży sobie "luzem" np. jeden grid i jeden button. Zaznaczam grida, robię ctrl+c, przechodzę do zakładki "B", robię ctrl+v, a on mi wkleja tego grida do zakładki "C". Co ciekawe, gdy następnym razem zrobię to samo, to wklei mi do zakładki "D", a kiedyś indziej do "H" - zupełnie losowo gdzie to wkleja.

zajcev
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad 7 lat
0

z ciekawosci probowalem to zrobic i faktycznie tragiczny komponent.. nawet ustawiony odpowiednio active page nic nie daje
proponuje przejsc na pagecontrol

OZ
  • Rejestracja:około 19 lat
  • Ostatnio:ponad 12 lat
0
zajcev napisał(a)

proponuje przejsc na pagecontrol

Już za późno. Program jest w mocno zaawansowanym stadium.

Co ciekawe, w starej wersji Delphi 6 problem był podobny, z tą różnica, że można było przewidzieć gdzie wyląduje wklejany komponent. To znaczy, można było dojść do tego, że np. chcąc, żeby wkleił się do zakładki "D", to trzeba się ustawić na zakładkę "G". Teraz mam Delphi 2010 i tutaj to jest zupełnie losowo.

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)