generowanie nazw komponentow

0

WItam
juz sie kiedys chyba o to pytalem ale chyba nie bylo odpowiedzi.

jak sie dodaje komponent do formularza to automagicznie generuje sie nazwa
(np button1, button2, button3....)

interesuje mnie czy jest dostepna jakas funkcja ktora zwraca pierwsze wolne
nazwe dla nowego komponentu?

0

A po co Ci to?... w porządnym projekcie nie nazywa się kontrolek wg schematu button1 ;)

0

po to ze jak tworze dynamicznie nowe komponenty z sensownymi nazwami to czasem moze sie zdarzyc ze jakas sie powtorzy(te nazwy ustala ktos inny a ja je biore z pliku wiec nie moge zagwarantowac ze beda unikatowe).

Chce zeby ta funkcja, o ktora sie pytam, przyjela jako parametr nazwe, ktora chce nadac, nastepnie sprawdzila wsrod komponentow czy istnieje juz komponent o takiej nazwie.
Jesli nie istnieje to niech zwroci moja nazwe z cyferka 1 na koncu,
a jesli juz taka nazwa wystepuje, to zeby zwrocila ta nazwe z pierwsza wolna liczba.

napisanie tego jest proste ale nie chce pisac czegos co juz jest, no i dodawanie tej metody do wszystkich komponentow bedzie uciazliwe - dlatego sie pytam czy jest.

button1, button2, button3...
bylo tylko dla przykladu

DIMMC?

0
SiNuS napisał(a)

w porządnym projekcie nie nazywa się kontrolek wg schematu button1

w porzadnym projekcie nazywa sie komponenty jak pasuje programiscie!
wazne tylko aby programista nie pogobil sie w nazwach
ktos moze wolec button1, button2, itd...
i ma do tego prawo!

[diabel]

0

Nudziło mi się trochę, więc:

function Nazwa(Name: string):string;
var
  count,ile: integer;
begin
  ile := 0;
  for count := 0 to Form1.ComponentCount-1 do
    if AnsiStartsStr(Name,Form1.Components[count].Name) then
      ile := ile + 1;
  Result := Name + IntToStr(Ile+1);
end;

chyba może być? :)

0

Kolega mowil ze bedzie je tworzyl dynamicznie, nic nie wspomnial czy rowniez bedzie je usuwal dynamicznie. Moze by problem gdy utworzy trzy obiekty 1,2,3 nastepenie usunie 2, funkcja zwroci 3 a taki obiekt juz by istnial.
Ewentualna konieczna poprawka, ktora sprawdzalaby liczbe pojawiajaca sie po nazwie i sprawdzala czy jest ona najwyzsza.
Ale to zaden problem wprowadzic.
pozdrawiam

0

Jak tworzysz dynamicznie kontrolki to po co przypuisujesz im nazwe ?

Nie wiem czy zauważyłeś ale nazwa kontrolki tworzonej przy projektowaniu okna wchodzi w skład kodu źródłowego i dlatego tam jest wymagana unikalność. A jak tworzysz dynamicznie kontroli to przeważnie masz jakąś zmienną typu np. TButton i do niej na chwile przypisujesz nowo utworzoną kontrolkę a później albo ustawiasz jej parenta albo dodajesz na jakąś listę i to wszystko - po co ustawiać nazwę ?

0

bo trzymam komponenty w liscie Owner.components
i uzywam czasem funkcji Owner.findcomponent.

juz sobie poradzilem z tym problemem.
napisalem funkcje ktora dla podanego komponentu i proponowanej nazwy
zwraca taka jaka moze zostac zastosowana wewnatrz podanego komponentu.

0
greenmag napisał(a)
SiNuS napisał(a)

w porządnym projekcie nie nazywa się kontrolek wg schematu button1

w porzadnym projekcie nazywa sie komponenty jak pasuje programiscie!
wazne tylko aby programista nie pogobil sie w nazwach
ktos moze wolec button1, button2, itd...
i ma do tego prawo!

[diabel]

Owsze, jak pasuje programiście (liczba pojedyńcza) - gdy nad projektem siedzą programiści (liczba mnoga) to jest z deka inaczej... ;->

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