Witam. Pisze aplikacje, i chce żeby aplikacja otwierała się w trybie pełnoekranowym oraz żeby nie było paska górnego (przyciski zamykania minimalizowania i rozmiaru okna już usunąłem ale jeszcze nie wiem jak usunac cała góre). Wykierował by mnie ktoś na temat z tym związany lub kod który coś takiego robi? Z góry mówie że używałem już funkcji szukaj i Google lecz nic takiego nie znalazłem :/
Pozdrawiam

- Rejestracja:około 8 lat
- Ostatnio:około 8 lat
- Postów:9

- Rejestracja:ponad 21 lat
- Ostatnio:dzień
Windows w zasadzie nie ma czegoś takiego jak „okno pełnoekranowe” jako osobny stan okna. Okno pełnoekranowe to takie, które po prostu zajmuje cały ekran i nie ma ramki.
Gdy takie okno zostanie otwarte, system powinien automatycznie schować pasek zadań. (absolutnie nie należy tego robić ręcznie)
Może być też potrzebne ustawienie Left i Top na 0 a Width i Height na rozmiar ekranu. Nie mam Delphi pod ręką.
musze ustawić jeszcze buttony w rozmiarze okna, chyba ze jest cos takiego co zmieniało by rozdzielczosc na 1240 x 800 bo w takiej rozdzialce chce to zrobic
Jeśli w designerze formularz jest relatywnie mały, a po uruchomieniu zawsze ma zajmować pełny ekran to kontrolki muszą się porozsuwać i dostosować rozmiar do wymiarów okna;
Do tego celu używa się właściwości Anchors
lub Align
, aby ustawić zakotwiczenie kontrolki do konkretnej lub konkretnych krawędzi rodzica (okna lub konstrolki grupującej jak TPanel
) lub całkowite wypełnienie całej przestrzeni z danej strony rodzica lub całej jego powierzchni; Jeśli dany komponent ma mieć określony maksymalny i/lub minimalny rozmiar, należy zainteresować się właściwością Constraints
(tej nie używaj, jeśli masz ustalony Align
);
Jeżeli nie o to chodzi to opisz problem dokładniej.

- Rejestracja:około 8 lat
- Ostatnio:około 8 lat
- Postów:9
pomogło dzięki :)
ale teraz mam kolejny problem nie związany z tematem..
wrzuciłem na forme TTimer który po ukończeniu pracy zmienia linijke w TMemo a następnie odświeża Forma lecz tego nie robi..
Form1.Refresh;
Form1.Update;
Form1.Repaint;
Użyłem każdej z w/w opcji i żadna nie zadziałała

- Rejestracja:około 8 lat
- Ostatnio:około 8 lat
- Postów:9
właśnie robi to co chce
procedure TForm9.Timer1Timer(Sender: TObject);
var
poziom:string;
begin
Label3.Caption := inttostr(i);
if i = 0 then
begin
Timer1.Enabled := false;
if(Label6.Caption='Ratusz') then
begin
poziom:=Label28.Caption;
Form1.BazaDanych.Lines.Delete(1);
Form1.BazaDanych.Lines.Insert(1, poziom);
Form9.Update;
end;
if(Label6.Caption='Koszary') then
begin
poziom:=Label28.Caption;
Form1.BazaDanych.Lines.Delete(2);
Form1.BazaDanych.Lines.Insert(2, poziom);
Form9.Refresh;
end;
if(Label6.Caption='Tartak') then
begin
poziom:=Label28.Caption;
Form1.BazaDanych.Lines.Delete(3);
Form1.BazaDanych.Lines.Insert(3, poziom);
Form9.Refresh;
end;
if(Label6.Caption='Kopalnia') then
begin
poziom:=Label28.Caption;
Form1.BazaDanych.Lines.Delete(4);
Form1.BazaDanych.Lines.Insert(4, poziom);
Form9.Refresh;
end;
if(Label6.Caption='Cegielnia') then
begin
poziom:=Label28.Caption;
Form1.BazaDanych.Lines.Delete(5);
Form1.BazaDanych.Lines.Insert(5, poziom);
Form9.Refresh;
end;
Form9.Update;
Label6.Visible:=false;
Label3.Visible:=false;
Label28.Visible:=false;
end;
i := i - 1;
end;
są tam różne funkcje (Refresh Update) bo probowalem jakos to zrobic ale nici...
jak działa program? Pobiera z labela zawartosc, nastepnie ją sprawdza, jeśli nazywa się np. Ratusz to sprawdza jej poziom (wpisany w labelu) następnie usuwa z Memo, potem dodaje do Memo i powinien odświeżyć ale tego nie robi..
Przecież Twój kod zmienia zawartość Memo
na Form1
, a Ty odświeżasz Form9
...
Po pierwsze, trzeba skrócić ten kod - ta drabinka if
ów nie dość że wygląda paskudnie, to jeszcze sprawdzany w niej jest każdy warunek, nawet jeśli któryś wcześniejszy zostanie spełniony; Napisz sobie funkcję, która zamieni łańcuch znaków z etykiety na liczbę, bo jej potrzebujesz w warunkach:
function BuildingNameToIndex(const AName: String): Integer;
const
BUILDING_NAMES: array [1 .. 5] of String = (
'Ratusz', 'Koszary', 'Tartak', 'Kopalnia', 'Cegielnia'
);
var
LIndex: Integer;
begin
for LIndex := Low(BUILDING_NAMES) to High(BUILDING_NAMES) do
if BUILDING_NAME[LIndex] = AName then
begin
Result := LIndex;
Exit();
end;
end;
Następnie pozbądź się tych warunków:
procedure TForm9.Timer1Timer(Sender: TObject);
var
LIndex: Integer;
begin
Label3.Caption := IntToStr(I);
if I = 0 then
begin
Timer1.Enabled := False;
Form1.BazaDanych.BeginUpdate();
try
LIndex := BuildingNameToIndex(Label6.Caption);
Form1.BazaDanych.Lines[LIndex] := Label28.Caption;
finally
Form1.BazaDanych.EndUpdate();
end;
Label6.Hide();
Label3.Hide();
Label28.Hide();
end;
Dec(I);
end;
To w zupełności powinno wystarczyć;
Zauważ, że w ogóle nie potrzebujesz usuwać pozycji z BazaDanych.Lines
- Ty usuwasz i wstawiasz nową dokładnie w to samo miejsce, więc spokojnie wystarczy po prostu zmienić wartość danej linijki i tyle; Dodałem wywołania metod BeginUpdate
i EndUpdate
, w razie gdyby VCL w Twoim starym Delphi miało jakiś problem z odświeżaniem zawartości (choć nie uważam, żeby tak było);
Poza tym nazwij kontrolki i formularze sensownie, bo identyfikatory typu Label3
, Form1
, Timer1
i podobne, kompletnie nic nie mówią o swoim przeznaczeniu.
Najpierw sprawdź, a poźniej narzekaj; Poza tym pozbądź się tego środowiska i pisz w jakimś aktualnym i ciągle rozwijanym; Lazarus jest o wiele lepszym środowiskiem od tego co masz, przy czym jest zupełnie darmowy.

- Rejestracja:około 8 lat
- Ostatnio:około 8 lat
- Postów:9
co do tego odświeżania Form
a już doszedłem jak to zrobić, odpowiedź daje dla potomnych
Mój Form
pobierał wszystkie dane przy procedurze onShow
a ja próbowałem go 'namalować jeszcze raz poprzez funkcje Repaint
a ta funkcja powoduje jeszcze raz zadziałanie procedury onPaint
więc wrzuciłem cały kod z onShow
do onPaint
i teraz funkcja Repaint
działa jak należy :)
Temat można zamknąć
