Izgled forme rešenja ovog zadataka prikazan je na donjoj slici.
Forma koristi novu komponentu ComboBox koja sadrži niz stavki u našem primeru brojeva i omuguće da se izabere jedna a takođe poseduje i Edit mogućnosti tj. omogućuje unos i novi stavki u listu. Pritskom na svojstvo Items otvoriće se ekran String List Editor pomoću kojeg upišemo članove te liste što je prikazano na donjoj slici.
Glavni deo koda ovog programa je sledeći:
.
.
procedure TForm1.ComboBox1Change(Sender: TObject); Var i,n,gr:integer; s:string; begin i:=ComboBox1.ItemIndex; s:=ComboBox1.Items[i]; Val(s,n,gr); If gr <> 0 Then begin ComboBox1.SetFocus; ComboBox1.SelectAll End Else Begin n:=StrToInt(ComboBox1.Items[i]); Edit1.Text:=DecToBinStr(n) End; end;
function TForm1.DecToBinStr(N: Integer): string; var S: string; i: Integer; Negativan: Boolean; begin if N<0 then Negativan:=True; N:=Abs(N); for i:=1 to SizeOf(N)*8 do begin if N<0 then S:=S+'1' else S:=S+'0'; N:=N shl 1; end; Delete(S,1,Pos('1',S)-1); if Negativan then S:='-'+S; Result:=S; end;
procedure TForm1.Unos(Sender: TObject; var Key: Char);
begin
If Key=#13 Then
begin
ComboBox1.Items.Add(ComboBox1.Text);
ComboBox1.Text:='';
Key:=#0;
End;
end; end.
|
Objasniti ćemo glavne karakteristike ovog programa:
- U proceduri ComboBox1Change(koja se poziva klikom na neki broj u listi) odredimo redni broj pozvanog člana(i:=ComboBox1.ItemIndex) a zatim preuzmemo element iz liste u promenljivu s(s:=ComboBox1.Items[i]). Nakon toga proveravamo da li je taj string broj, pa ako jeste pretvorimo taj string u ceo broj(n:=StrToInt(ComboBox1.Items[i]) te pozovemo funkciju DecToBinStr koja pretvori broj u binarni(primetite da ovo nije standardna funkcija Delphi-a već je posebno napisana). Na kraju prikažemo dobijeni binarni broj u Edit1 polje. U slučaju ako izabrani član nije numerički podatak vraćamo se na ponovni izbor.
- U proceduri Unos unosimo novi element u ComboBox1 listu(u događajima ComboBox-a, događaj OnKeyPress). Ispitujemo da li je pritisnut Enter taster(If Key=#13), pa ako jeste dodamo unešeni element u listu.
Kompletan kod programa možete preuzeti ovde.