Crearea unui buton programabil

Spuneți-mi, vă rog, cum să creați o componentă vizuală dinamic (buton) pe un formular din Delphi.

Btn: = TButton.Create (Self);
Btn.Parent: = Self;
Btn.Left: =






Btn.Top: =
Btn.Caption: = "Faceți clic pe mine";
Btn.Visible: = adevărat;

procedura TForm1.ButtonClick (expeditor: TObject);
începe

Vă mulțumesc foarte mult! Sa dovedit!


> și apoi după ce procedura Ctrl + S va dispărea :)

Aceasta este dacă declarația este publicată. De obicei, chiar și manipulanții, dacă nu în timpul de proiectare pe care îl aloc, am pus în privat, din nou, dacă nu apar alte nevoi. Apoi nimic nu dispare. )

Dar es-dar în locul în care este creat manualul implicit este publicat, deoarece totul este disponibil prin IE.


> Mă duc să-mi fac o pereche de hara-kiri.
>

"Unu Tablet este suficient" (c)


>> Mă voi face o pereche de hara-kiri
> un comprimat "
Da, am incurcat hara-kiri cu khachapuri :) Dar de aceea in Delphi sectiunea publicata evident nu se inregistreaza - este neclar. Stați, ghiciți prin semne indirecte (deși, o singură dată). Când creați componente (e) este de înțeles: doriți să vedeți # xA0; proprietatea în IO - pusă în publicare. Dar! Toți sunt pe stânga! Și ce este atârnat în dreapta. În plus față de componentele copiilor (fii?). Ele sunt, în general, pe partea de sus. Dar așa, în mișcare, nu-mi pot aminti o singură carte care a spus că secțiunea superioară, anonimă este publicată.

> Sidi, ghiciți prin semne indirecte

Sau nu ghiciți, ci citiți docul.

Pentru clasele compilate cu directiva și succesorii lor, secțiunea implicită este publicată, pentru restul - public.


> Dar de aceea în Delphi secțiunea publicată nu este în mod evident scrisă
> - nu este clar.

Deci este destinat componentelor, IMHO. Pentru proiect, este redundant. Din nou, IMHO.

> Dar așa, în mișcare, nu-mi pot aminti o singură carte
> care a spus că secțiunea superioară, fără nume este publicată.
>

Ei bine, unchiul Borland nu o spune așa, așa că în orice carte (Flenov merge în pădure), nu veți citi acest lucru. -)

Notă: Clasa TPersistent definită în unitatea de clase VCL și CLX este declarată în stare, astfel încât orice clasă derivată din TPersistent va avea RTTI generat pentru secțiunile sale publicate. VCL / CLX utilizează informațiile de tipul runtime generate sub forma unei legături cu proprietățile pentru a afișa lista de proprietăți pe care trebuie să le afișeze în inspectorul de obiecte.

Există rareori, dacă vreodată, orice nevoie de o aplicație pentru utilizarea directă a comutatorului de compilatoare $ M ".

Konopka are asta cu siguranță. Am văzut în altă parte, dar unde - nu-mi amintesc.

Ajutor D7, secțiunea Delphi Limba de referință / Vizibilitatea membrilor clasei:

Membrii la începutul unei declarații de clasă don „t au o vizibilitate sunt specificate în mod implicit publicate, cu condiția clasei este compilat în stare sau este derivată dintr-o clasă de compilat în stat, în caz contrar, acești membri sunt publice.

Spuneți-mi cum să creați o etichetă software? Specificați dimensiunea fontului? Locație?


> Spuneți-mi cum să creați o etichetă software? Setați fontul,
> # xA0; dimensiunea? Locație?

De asemenea, ca TButton


> [21] Mariya # xA0; (10/03/2007 09:18)

Anunțați întreaga listă, vă rog

lbl: = TLabel.Creați (Form1);
Lbl.Parent: = Form1;
lbl.Caption: = Ini.ReadString ("Label", "lbl1", "Bun venit!");
lbl.Font.Size: = 20;
lbl.Font. (ar trebui să fie îndrăzneț, nu știu cum să scriu corect!)

Cât de corect să stabiliți că nu a existat în centru formulele de mai sus (tip aliniat: = centru, sus? Nu știu, în general, titlul!)
lbl.Left: =?
lbl.Top:=?
lbl.Height: =?
lbl.Width: =?


> care a fost în centrul formei de sus

elementar aritmetic

> ar trebui să fie îndrăzneț, nu știu cum

lbl.Font.Style: = [fsBold];

> care a fost în centrul formei de sus

Marcați Align = alTop și Alignment = taCenter


> D6

Scriu în D6 a trebuit să calculeze matematic, sa dovedit. Totul a căzut pe poziție. Butoanele pe care le-am creat dinamic, cum le-am setat corect:
ShellExecute (mâner, zero, "WINWORD.EXE", NiL, NiL, SW_SHOWNORMAL);
în bottone dacă îl creezi din panou, atunci așa, dar cum se creează dinamic?


> calculați matematic






Trageți geometric
Coaceți culinar
Degenerați ca o genealogie
..
)


> Mariya # xA0; (03.10.07 14:16) [30]

Poate, nafik, este programat?
Închiriați un programator.

Viața grea: ((, sunt aici acum și am.

> Închiriați un programator.

Închiriați-mă. gygygy.

Creați-vă propria fereastră procedura pentru butoane, setați-o prin SetWindowLong, agățați-o peste partea de sus și faceți BM_CLICK după cum este necesar.

în același timp am răspuns în [30].

Și totuși cum să vă înregistrați programatic pe un buton creat dinamic, că ar trebui să deschidă un fel de executabil!

> Și totuși cum să înregistrați programatic pe un fișier creat dinamic
> că ar trebui să deschidă orice fișier!

Alocați-le operatorilor apăsând # 133

funcționa Obrabotcik_dinamiceskoi_knopki_Button1 (hWnd: HWND; Msg: LongInt; wParam, lParam: Longint): longInt; stdcall;
începe
# xA0; dacă Msg = BM_CLICK atunci începe
# xA0; # xA0; Zapusk_kakoynibud_progi;
# xA0; sfârșitul;
# XA0; Rezultat: = CallWindowProc (Pointer (Button1.Tag), hWnd, Msg, wParam, lParam);
se încheie;

Button1.Tag: = SetWindowLong (Button1.Handle, GWL_WNDPROC, LongInt (@ Obrabotcik_dinamiceskoi_knopki_Button1));

Spune-mi, există o cale mai simplă? Poate că există? Și poate chiar mult mai ușor?

Poate că există. Dar eu sunt stejar plin în VCL, deci depinde de tine.

Ei bine, obosit acest bodyaga (nu burete). Scrieți o metodă de tip:
TForm1.ButtonClick (Expeditor: TObject). în care apelați, tastați-30, creați un buton, lăsați-l să fie Button1, apoi:
Button1.OnClick: = ButtonClick; Când faceți clic pe butonul1, totul din corpul ButtonClick este executat. Aleluia!

Apoi, de ce să oferiți sfaturi pentru începători cu API? Înțelegeți că astfel de sfaturi te confundă doar cu tine și cu nimic altceva?

O zi frumoasă! Totul sa dovedit!

> Aliluya!

Rămâne aproape ultimul lucru pe care mi-am pierdut-o, dar cum să configurez programabil dimensiunea formularului? Pe care toate acestea sunt trase. Eu scriu astfel:

Form1.Caption: = Ini.ReadString ("Form", "Cap", "Navigator");
Form1.Height: = Ini.ReadInteger ("Formă", "Înălțime", 500);
Form1.Lățime: = Ini.ReadInteger ("Form", "Lățime", 700);
Ignoră, nu pune în mod prestabilit 500 pe 700.

A! De asemenea, despre meniu, meniul însuși a fost creat și cum se înregistrează filele?

E dimineata, trezeste-te! Ajutor proaspăt. )

Valoarea prestabilită este o valoare întregă de utilizat dacă nu există nici o cheie corespunzătoare Secțiunii sau nici o valoare de date.

Ne pare rău? Ce înseamnă asta?

> [48] Mariya # xA0; (10/04/07 08:33)

Acesta este un fragment din ajutorul funcției ReadInteger.

Spuneți-mi, plz, cum să creați un meniu de software, în formă de buton nu funcționează.

> în forma de botton

Undeva ca aceasta:

funcția TMenuInsertColleague.AddMenuItem (MainMenu: TMainMenu;
# xA0; MenuData: TMenuItemData): Boolean;
var
# xA0; I: Integer;
# xA0; TempMenuItem: TMenuItem;
începe
# xA0; Rezultat: = False;
# xA0; dacă este atribuită (MenuData) și asignată (MainMenu) atunci
# xA0; începeți
# xA0; # xA0; pentru I: = 0 la MainMenu.Items.Count # 151; 1 face
# xA0; # xA0; începeți
# xA0; # xA0; # xA0;
# xA0; # xA0; # xA0; dacă MainMenu.Items [I] .Caption = MenuData.Section atunci
# xA0; # xA0; # xA0; începeți
# xA0; # xA0; # xA0; # xA0;
# xA0; # xA0; # xA0; # TempMenuItem: = TMenuItem.Create (MainMenu);
# xA0; # xA0; # xA0; # xA0; TempMenuItem.Caption: = MeniuData.Capțiune;
# xA0; # xA0; # xA0; # xA0; TempMenuItem.ImageIndex: = MeniuData.ImageIndex;
# xA0; # xA0; # xA0; # xA0; TempMenuItem.Tag: = Integer (MenuData.CommandClass);
# xA0; # xA0; # xA0; # xA0; TempMenuItem.OnClick: = MenuClickEvent;
# xA0; # xA0; # xA0; # xA0;
# xA0; # xA0; # xA0; # xA0; MainMenu.Items [I] .Adăugați (TempMenuItem);
# xA0; # xA0; # xA0; # xA0; Rezultat: = Adevărat;
# xA0; # xA0; # xA0; # xA0;
# xA0; # xA0; # xA0; # xA0; Ieșire;
# xA0; # xA0; # xA0; sfârșitul;
# xA0; # xA0; sfârșitul;
# xA0; # xA0;
# xA0; # TempMenuItem: = TMenuItem.Create (MainMenu);
# xA0; # xA0; TempMenuItem.Caption: = MenuData.Section;
# xA0; # xA0; MainMenu.Items.Add (TempMenuItem);
# xA0; # xA0;
# xA0; # xA0; Rezultat: = AddMenuItem (MainMenu, MenuData);
# xA0; sfârșitul;
se încheie;

TMenuItemData # 151; nu aveți nevoie. Există linii ca "numele articolului" al meniului etc. # 133

Dar, pentru claritate, îi dau:

TMenuItemData = clasă
# xA0; strict private
# xA0; # xA0; FSection: șir; # xA0; # xA0; # xA0;
# xA0; # xA0; FCaption: șir;
# xA0; # xA0; FCommandClass: TCustomCommandClass;
# xA0; # xA0; FImageIndex: Integer;
# xA0; public
# xA0; # xA0; constructor Creare (Secțiune: șir; Legendă: șir;
# xA0; # xA0; # xA0; CommandClass: TCustomCommandClass; ImageIndex: Integer = # 151; 1);

# xA0; # xA0; secțiunea de proprietăți: șir șterse FSection;
# xA0; # xA0; proprietatea Caption: șirul de citire FCaption;
# xA0; # xA0; proprietatea CommandClass: TCustomCommandClass citit FCommandClass;
# xA0; # xA0; proprietatea ImageIndex: Integer citire FImageIndex;
# xA0; sfârșitul;

Mulțumesc, dar nu cred că era atât de dificil! O să încerc.

> Mulțumesc, dar nu credeam că era atât de dificil! Voi încerca # 133

Puteți face totul mult mai simplu # 151; aceasta este o piesă a proiectului. Aveți suficiente:

TempMenuItem: = TMenuItem.Create (MainMenu);
# xA0; # xA0; # xA0; TempMenuItem.Caption: = "Elementul meu";
# xA0; # xA0; # xA0; TempMenuItem.OnClick: = MenuClickEvent; // <— Клик
# xA0; # xA0; # xA0;
# xA0; # xA0; # xA0; MainMenu.Items [I]. Adăugați (TempMenuItem);

în cazul în care:
MainMenu.Items [I] # 151; acesta este un element de nivel superior, de exemplu "Fișier
"


> TempMenuItem: = TMenuItem.Create (MainMenu);
> # xA0; # xA0; # xA0; TempMenuItem.Caption: = "Elementul meu";
> # xA0; # xA0; # xA0; TempMenuItem.OnClick: = MenuClickEvent; // <— Клик
> # xA0; # xA0; # xA0;
> # xA0; # xA0; # xA0; MainMenu.Items [I]. Adăugați (TempMenuItem);

Ea produce erori. Necunoscut MenuClickEvent și OnClick

MenuClickEvent este un handler
trebuie scris

Scrie Mariya pe cineva un program.


> Maria, glumești?

NU! Deja totul sa dovedit, datorită tuturor celor mari.

dacă MessageDlg ("Exit?", mtConfirmation, [mbYes, mbNo], 0) = mrYes atunci.

scrieți, în loc de Da și Nu, DA și NU?

MessageBox () pe Windows rusă va afișa Da și Nu


> Acest burete de corp (nu un burete)

în cazul în care buretele, atunci este bretele = Spongilla lacustris.


> Dacă este un burete, atunci este un burete = Spongilla lacustris.
Ok, excelent







Articole similare

Trimiteți-le prietenilor: