label - polskie znaki

0

Da się coś zrobić, by label wyświetlał polskie znaki np. "ś" ?

0

A co nie da się?! I metoda: wpisz w notatniku/menu Start "ś", ctrl+c, ctrl+v w Delphi. II metoda w necie jest taka łatka do Delphi, że można wpisywać polskie znaki.

0
norbert.it napisał(a)

Da się coś zrobić, by label wyświetlał polskie znaki np. "ś" ?

W wersji Borland Delphi 7 nie ma żadnego problamu z obsługą polskich znaków w komponentach; Możesz wpisywać je we właściwościach określających wyświetlaną nazwę (jak Caption w obiektach z klasy TLabel, TButton, TPanel czy TMenuItem) jak i np. ścieżkach (jak InitialDir w komponencie z klasy OpenDialog czy SaveDialog); Polskie znaki nie mogą być wykorzystane do określania identyfikatorów jak właściwość Name w komponentach, ogólnie obiektach, zmiennych, satłych itd; O tym jest wszsytko w kursach Delphi, w dziale nazewnictwo zmiennych itd.;

xeo545x39 napisał(a)

II metoda w necie jest taka łatka do Delphi, że można wpisywać polskie znaki.

Owszem, ale to tyczy się wpisywania znaków dialektycznych bezpośrednio w konsoli; Autorowi chyba chodzi o właściwość Caption w labelach; Jeżeli natomiast chciałby także łatkę, dzięki której można wpisywać w edytorze nasze znaki - zamieszczam załącznik z odpowiednim kluczem, który wystarczy najzwyczajniej dodać do rejestru systemu i zrebutować kompilator;

0

program....

Jak wpiszę słowo które ma być zamienione na odpowiednią ilość '_' i potem wpiszę literkę która zawierała się w tym słowie np. "ł" to program znajdzie taką literkę jednak jej nie wyświetli, tylko zamiast niej wyświetli mi małą "3", tak jest z polskimi znakami....
Dodałem ten wpis do rejestru. Jednak nadal wyświetla się ta dziwna trójeczka zamiast literki "ł".

Chodzi mi o Caption:
for i:=1 to length(slowo) do
if slowo[i]=literka then
begin
a:=1; // odgadnieto literke
labelek[i*2-1]:=literka;
slowo_label.Caption:=labelek;
end;

0
For i:=1 to length(slowo) do if slowo[i]<>'' then inc(ile);
   if ile=1 then slowo_label.Caption:='_ ';
   if ile=2 then slowo_label.Caption:='_ _ ';
   if ile=3 then slowo_label.Caption:='_ _ _ ';
   if ile=4 then slowo_label.Caption:='_ _ _ _ ';
   if ile=5 then slowo_label.Caption:='_ _ _ _ _ ';
   if ile=6 then slowo_label.Caption:='_ _ _ _ _ _ ';
   if ile=7 then slowo_label.Caption:='_ _ _ _ _ _ _ ';
   if ile=8 then slowo_label.Caption:='_ _ _ _ _ _ _ _ ';
   if ile=9 then slowo_label.Caption:='_ _ _ _ _ _ _ _ _ ';
   if ile=10 then slowo_label.Caption:='_ _ _ _ _ _ _ _ _ _ ';
   if ile=11 then slowo_label.Caption:='_ _ _ _ _ _ _ _ _ _ _ ';
   if ile=12 then slowo_label.Caption:='_ _ _ _ _ _ _ _ _ _ _ _ ';
   if ile=13 then slowo_label.Caption:='_ _ _ _ _ _ _ _ _ _ _ _ _ ';
   if ile=14 then slowo_label.Caption:='_ _ _ _ _ _ _ _ _ _ _ _ _ _ ';
   if ile=15 then slowo_label.Caption:='_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ';
   if ile=16 then slowo_label.Caption:='_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ';
   if ile=17 then slowo_label.Caption:='_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ';
   if ile=18 then slowo_label.Caption:='_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ';
   if ile=19 then slowo_label.Caption:='_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ';
   if ile=20 then slowo_label.Caption:='_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ';

(...)

case j of
        1:
         begin
           Image.Visible:= false;
           Image1.Visible:= true;
           zycia_label.Caption:='13';
         end;
        2:
         begin
           Image.Visible:= false;
           Image2.Visible:= true;
           zycia_label.Caption:='12';
         end;
        3:
         begin
           Image3.Visible:= true;
           Image.Visible:= false;
           zycia_label.Caption:='11';
         end;
        4:
         begin
           Image4.Visible:= true;
           Image.Visible:= false;
           zycia_label.Caption:='10';
         end;
// I TAK DALEJ...

Ja się pytam, czy twoja mama widziała ten kod?

Może pomoże:
http://4programmers.net/Forum/Delphi_Pascal/94325-Angielski_System_i_Polskie_znaki

0

nie pomógł :) a co do programu to był pisany na szybko ...

0

udało się, działają mi polskie znaki...
zrobiłem nowy program który wczytuje do labela tekst znajdujący się w edicie('śćąźóę') jak to miało miejsce w moim starszym programie i działają polskie znaki
jednak właśnie w starszym programie nie działają, chyba będę musiał przekopiować go do nowej formy i unitu i potem sprawdze czy działa, ale teraz jeszcze mam pytanie czy będą działać polskie znaki na innym komputerze ?????

0

mniejsza...
sprawdziłem na laptopie odpalając exe'ka
działa
thx za łatke do rejestru :)

chociaż tak sobie pomyślałem że może pomożecie mi w może laikowej sprawie, mianowicie tak wygląda mój programik (gra wisielec)
http://imageshack.us/photo/my-images/594/43475442.jpg/
może powiecie mi co mógłbym jeszcze dopracować coś dodać, jak zmienić wygląd programu by był bardziej czytelny :) ?

1
  For i:=1 to length(slowo) do if slowo[i]<>'' then inc(ile);
   if ile=1 then slowo_label.Caption:='_ ';
   if ile=2 then slowo_label.Caption:='_ _ ';
   if ile=3 then slowo_label.Caption:='_ _ _ ';
   if ile=4 then slowo_label.Caption:='_ _ _ _ ';
   if ile=5 then slowo_label.Caption:='_ _ _ _ _ ';
   if ile=6 then slowo_label.Caption:='_ _ _ _ _ _ ';
   if ile=7 then slowo_label.Caption:='_ _ _ _ _ _ _ ';
   if ile=8 then slowo_label.Caption:='_ _ _ _ _ _ _ _ ';
   if ile=9 then slowo_label.Caption:='_ _ _ _ _ _ _ _ _ ';
   if ile=10 then slowo_label.Caption:='_ _ _ _ _ _ _ _ _ _ ';
   if ile=11 then slowo_label.Caption:='_ _ _ _ _ _ _ _ _ _ _ ';
   if ile=12 then slowo_label.Caption:='_ _ _ _ _ _ _ _ _ _ _ _ ';
   if ile=13 then slowo_label.Caption:='_ _ _ _ _ _ _ _ _ _ _ _ _ ';
   if ile=14 then slowo_label.Caption:='_ _ _ _ _ _ _ _ _ _ _ _ _ _ ';
   if ile=15 then slowo_label.Caption:='_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ';
   if ile=16 then slowo_label.Caption:='_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ';
   if ile=17 then slowo_label.Caption:='_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ';
   if ile=18 then slowo_label.Caption:='_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ';
   if ile=19 then slowo_label.Caption:='_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ';
   if ile=20 then slowo_label.Caption:='_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ';

Czy Ciebie DRY&KISS nie obowiązuje...?!

var
  sLine: String;
  I: Integer;
begin
  sLine := '';

  for I := 1 to Length(Slowo) do
    sLine := sLine + '-';

  lblSlowo.Caption := sLine;

Nie prościej..? A to:

      case j of
        1:
         begin
           Image.Visible:= false;
           Image1.Visible:= true;
           zycia_label.Caption:='13';
         end;
        2:
         begin
           Image.Visible:= false;
           Image2.Visible:= true;
           zycia_label.Caption:='12';
         end;
        3:
         begin
           Image3.Visible:= true;
           Image.Visible:= false;
           zycia_label.Caption:='11';
         end;
        4:
         begin
           Image4.Visible:= true;
           Image.Visible:= false;
           zycia_label.Caption:='10';
         end;
        5:
         begin
           Image5.Visible:= true;
           Image.Visible:= false;
           zycia_label.Caption:='9';
         end;
        6:
         begin
           Image6.Visible:= true;
           Image.Visible:= false;
           zycia_label.Caption:='8';
         end;
        7:
         begin
           Image7.Visible:= true;
           Image.Visible:= false;
           zycia_label.Caption:='7';
         end;
        8:
         begin
           Image8.Visible:= true;
           Image.Visible:= false;
           zycia_label.Caption:='6';
         end;
        9:
         begin
           Image9.Visible:= true;
           Image.Visible:= false;
           zycia_label.Caption:='5';
         end;
        10:
          begin
           Image10.Visible:= true;
           Image.Visible:= false;
           zycia_label.Caption:='4';
          end;
        11:
          begin
           Image11.Visible:= true;
           Image.Visible:= false;
           zycia_label.Caption:='3';
          end;
        12:
          begin
           Image12.Visible:= true;
           Image.Visible:= false;
           zycia_label.Caption:='2';
          end;
        13:
          begin
           Image13.Visible:= true;
           Image.Visible:= false;
           zycia_label.Caption:='1';
          end;
        14:
         begin
           Image14.Visible:= true;
           Image.Visible:= false;
           literka_edit.Enabled:= false;
           slowo_edit.Enabled:=false;
           zycia_label.Caption:='0';
           slowo_edit.Text:=slowo;
         end;
    end;

nie lepiej tak:

Image.Hide();
TLabel(FindComponent('Image' + IntToStr(J))).Show();
zycia_label.Caption := IntToStr(14 - J);

if J = 14 then
  begin
    literka_edit.Enabled := False;
    slowo_edit.Enabled := False;
    slowo_edit.Text := slowo;
  end;

no pewnie, że lepiej; A to:

 Image.Visible:= true;
 Image1.Visible:= false;
 Image2.Visible:= false;
 Image3.Visible:= false;
 Image4.Visible:= false;
 Image5.Visible:= false;
 Image6.Visible:= false;
 Image7.Visible:= false;
 Image8.Visible:= false;
 Image9.Visible:= false;
 Image10.Visible:= false;
 Image11.Visible:= false;
 Image12.Visible:= false;
 Image13.Visible:= false;
 Image14.Visible:= false;

nie lepiej tak:

var
  I: Integer;
begin
  Image.Show();

  for I := 1 to 14 do
    TImage(FindComponent('Image' + IntToStr(I))).Hide();

Na pewno lepiej; A to:

if (literka_edit.Text<>'')and(slowo_label.Caption<>'') then sprawdz_button.Enabled:=true else sprawdz_button.Enabled:=false;

nie będzie lepiej tak:

sprawdz_button.Enabled := (literka_edit.Text <> '') and (slowo_label.Caption <> '');

Krócej nie jest lepiej? A to:

if slowo_edit.Text<>'' then start_button.Enabled:=true else start_button.Enabled:=false;

nie lepsze w takiej postaci:

start_button.Enabled := slowo_edit.Text <> '';

Pewnie, że tak;

Twój program jest tak długi i dziwaczny, że nie wiem czy ktokolwiek na niego spojrzy, dopóki nie zoptymalizujesz kodu; A można to zrobić i to całkiem dobrze, skracając go o 60%;

norbert.it napisał(a)

a co do programu to był pisany na szybko

No nie wiem czy tak na szybko, o wiele szybciej było by od razu pisać konkretne algorytmy a nie kopiuj, wklej...

Przede wszystkim zoptymalizuj kod i popracuj nad identyfikatorami kontrolek;

0

Masz zupełną rację co do tego że lepiej wygląda krótszy program, ja go robiłem tylko po to by działał(nie zastanawiałem się jak najkrócej to napisać) :) Ale dzięki za porady :) Niektórych elementów z twoich propozycji rzeczywiście nie miałem, bo jestem dopiero w drugiej klasie technikum informatycznego...
Teraz pozostaje mi tylko zmiana wyglądu mojego programu i być może jeszcze go ulepszenie.
//Poprawione :)
Tak wygląda program:
x.jpg

Macie jakieś propozycje co do zmiany wyglądu programu, lub jego rozbudowania ?

0
norbert.it napisał(a)

nie zastanawiałem się jak najkrócej to napisać

A powinieneś, bo zaoszczędził byś i sobie i nam czasu; Sobie w pisaniu, a nam czasu na odszyfrowanie Twojego kodu; I mi papierosów :P

norbert.it napisał(a)

Masz zupełną rację co do tego że lepiej wygląda krótszy program

Wygląd kodu to ważna sprawa, ale nie tylko dlatego pisze się jak najkrótszy; Przede wszystkim:

  1. kod jest krótszy i łatwiej w nim cokolwiek znaleźć
  2. zwiększona szybkość wykonywania kodu
  3. mniejsza waga pliku wykonywalnego
  4. szybsza i łatwiejsza jego modyfikacja / optymalizacja
    Zastanów się nad tym i stosuj się do tego, a będziesz lepszym programistą; Poza tym pisząc kod na bieżąco zastanawiaj się nad jego jak najkrótszą reprezentacją;

Czyli program to gra w szubienicę :)

PS: Jeżeli chcesz dodać obrazek do postu, to podczas jego pisania masz zakładkę Załączniki - dodaj tam plik z grafiką (np. Grafika.png), a następnie w treści posta wpisz {{Image:Grafika.png}} w miejscu, gdzie chcesz by był wyświetlony; Pamiętaj na przyszłość :)

0

Jest problem.. otóż zmieniłem wygląd mojego programu, a właściwie to cały czas go zmieniam i jeszcze nie jest skończony, ale wyszło mi coś takiego:
a.jpg

jednak przy kompilacji programu, lub otworzenia exe'ka na moim i na innych komputerach program ma zamazane literki co przedstawia ten scr'in:
b.jpg

Co może być tego przyczyną? I jak to naprawić ?
Zrobiłem za dobrą grafikę :D ?

0
norbert.it napisał(a)

Co może być tego przyczyną?

Co może być przyczyną Ci nikt nie napisze, bo nie zamieściłeś kodu; W każdym razie z tego, co przedstawia dolna grafika - po kompilacji i uruchomieniu, tekst ma kolor biały, więc musisz sprawdzić jaki kod masz w zdarzeniach OnCreate i OnShow formularza, bo na to wychodzi, że w czasie tworzenia okna lub jego pokazywania zostaje zmieniony kolor czcionki przycisków;

Nie wiem co może być jeszcze przyczyną, te przyciski wyglądają tak, jakby do napisów (białych) był dodany cień (czarny) i tekst się zlewa; Ale nic więcej nie jestem w stanie napisać, bo mało informacji podałeś; Postaraj się napisać coś więcej;

0

Ogólnie ten pomysł z btnA ... btnZ itd. nie jest dobry. Nie możesz tego robić dynamicznie podczas wczytywania formy? Jeżeli każdy przycisk ma wprowadzać literkę czy coś takiego, to wprowadza znak, który jest częścią nazwy btn[znak] i przypisujesz mu to w odpowiednim evencie.

0
xeo545x39 napisał(a)

Nie możesz tego robić dynamicznie podczas wczytywania formy? Jeżeli każdy przycisk ma wprowadzać literkę czy coś takiego, to wprowadza znak, który jest częścią nazwy btn[znak] i przypisujesz mu to w odpowiednim evencie.

To jest dobry pomysł; Te przyciski można by podczas tworzenia formularza utworzyć np. w tablicy i podczas tworzenia nadać im wszystkie właściwości + podpiąć zdarzenie klikania; Jedno zdarzenie dla wszsytkich wygenerowanych przycisków; Przyciski można wygenerować opierając się na pętli for, gdzie licznikiem jest znak, który później wykorzysta się do nadawania właściwości;

Tylko możesz mieć problem z ustawieniem ich na formularzu; Trzeba odpowiednio obliczyć współrzędne dla każdego przycisku pamiętając, że mają być w czterech rzędach;

@ Taka mała wskazówka jeszcze - jak robisz listę tych przycisków, to zawrzyj w niej przyciski oznaczone alfabetem jednego języka, bo Twój ma nasz - polski i angielski;

0

Co do niewyraźnego wyglądu programu, okazało się, że miałem wirusa (wirusy) w Delphi, no cóż takie rzeczy się zdarzają.. strzeliłem format'a i już wszystko śmiga (innej opcji nie miałem).
A co do powyższych propozycji, to nie wiem jak to zrobić :/, mniejsza ważne że program działa.
Teraz właśnie, mam jeszcze pytanie czy da się jakoś pogrupować buttony, w tym sensie, że za jednym razem Enabled zmienić na true wszystkich buttonów (chodzi mi o buttony odpowiadające za litery alfabetu)?

Drugie pytanie to jak zrobić by image był użyty jak button?

0
norbert.it napisał(a)

Drugie pytanie to jak zrobić by image był użyty jak button?

Co masz na myśli? Bo przecież Image ma zdarzenie OnClick. ma Enabled, mozna mu dodać po dziedziczeniu zdarzenia OnMouseLeave i OnMouseEnter, na temat czego szczegóły znajdziesz w google, a więc nadal nie wiem z czym masz problem ;/

0

Masz zawsze komponent z klasy TPNGButton, który znajduje się w paczce PNG Image (patrz w załączniku); Zainstaluj i korzystaj;

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