Tshape dynamicznie

0

Witam Wszystkich!
Potrzebuje pomocy.

  1. Muszę otworzyć dynamicznie komponent tshape jako okrąg.
  2. Każdy komponent nazwę w postaci cyfry od 1 do nieskończoności.

Jeśli ktoś wie jak to zrobić to wielkie dzięki i wdzięczność z mojej strony.
Pozdrawiam.

0

Deklarujesz jakąś zmienną globalną, powiedzmy Ilosc: Integer. W OnCreate na przykład dajesz

Ilosc:=0

. Następnie w momencie, kiedy masz tworzyć nowe kółko robisz coś takiego:

  • Deklarujesz kółko (
var Kolo: TShape;

).

  • Zwiększasz Ilosc (
Inc(Ilosc);

).

  • Tworzysz obiekt (
Kolo:= TShape.Create(Form1);

). //Tutaj oczywiście zamiast Form1 dajesz nazwę formatki.

  • Nadajesz rodzica, żeby było wiadomo, gdzie ma go wyświetlać. Nie jestem pewny, czy to konieczne, ale nie zaszkodzi (
Kolo.Parent:=Form1;

). //J/w.

  • Ustawiasz szerokość, wysokość i położenie wedle woli (nie określiłaś/eś, jak to chcesz zrobić).
  • Ustawiasz, żeby to było koło (
Kolo.Shape:=stCircle;

).

Jak chodzi o ustawienie nazwy na liczbę jest to niestety niemożliwe. Nazwa nie może być liczbą. Poza tym jak chcesz mieć komponent o jakiejś nazwie musisz to zadeklarować przy pisaniu, nazwy nie da się zmienić podczas uruchomionego prgramu. No, chyba że chcesz zrobić tablicę dynamiczną z kołami, to daj znać, to napiszę jak to przerobić.
//dopisane: poprawiłem te ;) zamiast

;

).

0

Poza tym jak chcesz mieć komponent o jakiejś nazwie musisz to zadeklarować przy pisaniu, nazwy nie da się zmienić podczas uruchomionego prgramu.
Co za bullshit.......

Otóż nazwa może być liczbą... prawie :> Musi zaczynać się od litery.
Więc nazwij je sobie np. "c1" ... "c12233434545" itd.

0
Marooned napisał(a)

Poza tym jak chcesz mieć komponent o jakiejś nazwie musisz to zadeklarować przy pisaniu, nazwy nie da się zmienić podczas uruchomionego prgramu.
Co za bullshit.......

Jaki bullshit? Parametr name jest ReadOnly. Nie możesz sobie zmieniać nazwy komponentu, bo przeca kompilator by zwariował (raz się odwołujesz tak, a po zmianie nazwy inaczej? Jak to sobie wyobrażasz??)...

0

Nie koniecznie powinna to być liczna. Nowotworzone komponenty powinny nazwą być różna od siebie tak aby można było przypisać im jakić komentaż. Np:
nazwa1
nazwa2
itd...

Jeśli chodzi o tworzenie nowych komponentów to powiedzcie jak określić ich wielkość i polożenie na formie.

Dzięki!

0

Analogicznie zmieniasz właściwości Top, Left, Height, Weight.

0
Adam.Pilorz napisał(a)

Parametr name jest ReadOnly. Nie możesz sobie zmieniać nazwy komponentu, bo przeca kompilator by zwariował (raz się odwołujesz tak, a po zmianie nazwy inaczej? Jak to sobie wyobrażasz??)...

Nie jest, nie może być. Jakby był read-only to Object Inpector też by nie mógł zmienić nazwy komponentu. A spróbuj zmienić nazwę podczas działania programu - da się (a czy można to już nie wiem :) ). Kiedyś tak zrobiłem (lubię się dowiadywać nowych rzeczy przez eksperymentowanie) ale skutków niestety nie pamiętam :(

0
Adam.Pilorz napisał(a)

Jaki bullshit? Parametr name jest ReadOnly. Nie możesz sobie zmieniać nazwy komponentu, bo przeca kompilator by zwariował (raz się odwołujesz tak, a po zmianie nazwy inaczej? Jak to sobie wyobrażasz??)...
Oj Adamie...

from help:

property Name: TComponentName;

Description

Use the Name property <font color="red">to assign a new name</span> to the control or to find out what the name of the control is.

W pomocy do BCB to lepiej widać:

__property AnsiString Name = {read=FName, <font color="red">write=SetName</span>, stored=false};

Więc bullshit [green]

0
begin
  Button2.name := 'programmers';
  (FindComponent('programmers') as TButton).Name := 'N1';
  (FindComponent('N1') as TButton).Name := 'N0';
  (FindComponent('N0') as TButton).Name := 'N2';

  (FindComponent('N2') as TButton).Caption := 'Nowy Caption pieknie sie zmienia';
end;
0

Wielkie dzięki :(
Pytałem o coś innego jak utworzyć tshape tak aby każdy miał inną nazwę a nie jak zmienić nazwę.

0
kryczka_w napisał(a)

Pytałem o coś innego jak utworzyć tshape tak aby każdy miał inną nazwę a nie jak zmienić nazwę.
Buehehe - czy przeczytałeś to, co napisałeś? [glowa]

0

Może inaczej.
Klikamy w formę i za pomocą onclic trorzymy dynamicznie jakić komponent. Klikamy raz jeszcze i tworzymy następny. Klikamy n-ty i tworzymy n-ty. Chodzi o to że nie wiemy ile komponentów utworzymy. Każde kliknięcie powinno tworzyć komponent o nazwie zakończonej cyfrą: komp1, komp2, komp3 itd.

0

No ale wszyscy to zrozumieli i wytłumaczyli Ci jak to zrobić [!!!]
Jeśli nadal tego nie widzisz, to zajmij się obieraniem pietruszek.
Temat blokuje, bo już więcej nie da się powiedzieć prócz napisania za Ciebie całego kodu, a nie od tego jest forum.

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