Buttony

0

Czy z po wczytaniu warotści z pliku INI mogę tworzyć wiele buttonów o parametrach z pliku ini (np.
[1]
n=test
[2]
n=drugi przycisk
)
i po kliknięciu na button1 wczytać właściwości i stowrzyć buttony (n=caption buttona) chodzi mi procedurę która po kolei wczytuje wartości (najpierw 1 potem 2 czyli integer+1 :p)

<font color="blue">//ostrzeżenie - ostatni raz widzę topic o takiej głupiej nazwie i go nie usuwam! - M</span>

0

Pewnie ze sie da..

Pierw deklarujesz sobie tablice dynamiczną Array of TButton. Później procedurę, która będzie odczytywać.. czyli - pętla for i := 1 to IloscButtonow do .. - i dalej: zwiększasz wielkość tablicy o 1, tworzysz Buttona - i nadajesz mu Caption przez INI.ReadString.. Wszelkie informacje znajdziesz w artykułach.

0

(najpierw 1 potem 2 czyli integer+1 )

Coś tu zamotałeś :P

Ale na temat to tworzenie buttona masz:

uses ... INIFiles;
var
  Button :array [0..TyleIleTamMasz] TButton;
  i:integer;
  Ini:FIniFiles

(...)

begin
  for i:=1 to TyleIleTamMasz do
  begin
    Button := TButton.Create(Self);
    Button.Parent := Self;
    Button.Caption := Ini.ReadString(IntToStr(i),'n','');
    Button.Left := 20;
    Button.Top := 20;
  end;
end;

Albo sobie zapisz w Ini tyle ile ich tam ma być i rób pętle do wartość odczytanej z pliku i na tablicy dynamicznej (SetLength(Button,Ini.ReadInteger('Main','IleButtonów',0);

I tyle :P

//// spóźniłem sie :)

0

dzięki bardzo :)
A czy się da do każdego buttona zadeklarować funkcje (zczytuje je z ini np.e=1 a potem if edit1='1' then button....???)

0

Teraz to kompletnie nie wiem o co ci chodzi :/..opisz dokładniej bo tu nie ma jasnowidzów :P

0

Pewnie chodzi o FindComponent() .. przeczytaj sobie opis funkcji w helpie..

0

Teraz to kompletnie nie wiem o co ci chodzi :/..opisz dokładniej bo tu nie ma jasnowidzów :P

Chodzi o to że jak tworze komponent czy mogę dać dla niego jakąś funkcje (np. ma wykonać w OnClick).

Sorry że źle sprecyzowałem post, jeszcze raz przepraszam.

0

podczas tworzenia dajesz
(..)

button[i].OnClick:=OnKlikButton;

(..)
gdzie OnKlikButton to jest procedura twojej klasy (zapewne TForm1)

// a konkretnie to TNotifyEvent typu procedure (Sender: TObject) of object; :) - detox

0

a jak można zrobić by <ort>Od razu</ort> wykonać showmessage z onclicka????

już sam <ort>doSZEDŁem</ort> ;)

0

<ort>Od razu</ort> chyba nie można ale przecież sobie możesz zrobić:

procedure TForm1.OnKlikButton(Sender:Tobject);
begin
Showmessage('kliknąłeś');
end;

0

Mam jeden problem jak można zrobić żeby do każdego buttona wyświetlił się tekst (showmmesage) zdefiniowany w INI??
[1]
tekst=111
[2]
tekst=fdfd

^ czyli do każde inny (taki jaki jest przy wciśnięciu)

0

można zrobić że każdy tworzony button wyświetla inny tekst (taki jaki ma w pliku ini)??

czy można też tworzyć dynamicznie tnotifyevent??

0

można zrobić że każdy tworzony button wyświetla inny tekst (taki jaki ma w pliku ini)??

Można ..

procedure TForm1.OnKlikButton(Sender:Tobject);
begin
Showmessage(INIReadString('Sekcja', Sender.Name, 'Brak wartosci w INI'));
end;

czy można też tworzyć dynamicznie tnotifyevent??

wyjaśnij ...

0

chodziło mi o to czy można tworzyć zdarzenie na podstawie z pliku ini.
twój kodzik nie działa :(

0

Zrób sobie język skryptowy ;-)
Albo każdemu buttonowi dajesz jakiś identyfikaor (korzystasz z własności Tag), a nastepnie pakujesz według Tagów komunikaty do tablicy i wyświetlasz odpowiedni.

0

Sęk w tym ,że ja te buttony tworze dynamicznie i tego buttona nie ma formi (on będzie tworzony).

Właśnie robie własny język 'programowania' (a raczej skryptowy ;)

0

Moj kod działa.. ale dla innego ustawienia INI - po prostu podmień.. tam gdzie masz sekcje - ustaw swoje (nazwy tych button`ów czy co tam), klucze wartości.. kwestia tego jak masz to ustawione w INI. Myślałem, że na tej podstawie już sobie poradzisz...

0

wszystko pozmieniałem dla swojej potrzeby (taki tępy nie jestem ;)
tylko nie mogło skompilować sender.name (czy może trzeba po : (sender:tobject) <<pisze z pamięci, dodać of object)?

0

To zamień na TButton(Sender).Name

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