[Delphi]CheckBoxy i Brak znaków w TEdit

0

Cześć, daaaawno się nie bawiłem programowaniem a i wtedy moja wiedza byął raczej mizerna. Dzisiaj postanowiłem zrobić coś na swój użytek. Prawie skończyłem, ale brakuje mi dwóch rzeczy.

Mam 2 checkboxy zrobione tak aby po kliknięciu na jeden odznaczał się przy okazji drugi i na odwrót. Niestety można po zaznaczeniu jednego kliknąć nań ponownie tak że odznaczone są dwa.

O dziwo:

procedure TForm1.CheckBox1Enter(Sender: TObject);
begin
CheckBox2.Checked := false;
end;

działa, ale:

procedure TForm1.CheckBox1Enter(Sender: TObject);
begin
CheckBox1.Checked := true;
CheckBox2.Checked := false;
end;

już nie do końca. Wtedy checkbox na który klikam zaznacza się i w ułamku sekundy odznacza, co wymaga ponownego kliknięcia.

Chciałbym, aby po prostu nie dało się odznaczyć obu checkboxów - jeden zawsze pozostawał zaznaczony.

I druga sprawa:

Mam powstawiane TEdit z określonymi znakami jakie można wpisać. Jeśli nie wpiszę nic to system wywala mi błąd

" is not a valid floating point value.
Jak się tego pozbyć? Tzn jaka jest komenda na zbiór pusty?

A, i po tym mam znów if. W delphi elseif chyba nie ma więc czy przykładowo:

if
//w Tedit nic nie ma//;
then
abort;
ShowMessage('Wprowadź wszystkie dane');

if
checkbox1.checked = false
then
blablabla

zadziała?

0

Do tego są Radiobuttony, a jak chcesz Checkboxy to np.:

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if Checkbox1.Checked = True then Checkbox2.Checked:=False
 else if Checkbox1.Checked = False then Checkbox2.Checked:=True;
end;

procedure TForm1.CheckBox2Click(Sender: TObject);
begin
if Checkbox2.Checked = True then Checkbox1.Checked:=False
  else if Checkbox2.Checked = False then Checkbox1.Checked:=True;
end;

Czytałeś coś o obsługach wyjątków?
Np:

try...except...end;

Lub w OnExit tego Edita wpisuj do niego 0,00, a jesli używasz pakietu Jedi to w jvEdit we właściwości EmptyValue daj 0,00.

0

Mocno przekombinowane :/

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
 CheckBox2.Checked := Not CheckBox1.Checked;
end;

procedure TForm1.CheckBox2Click(Sender: TObject);
begin
 CheckBox1.Checked := Not CheckBox2.Checked;
end;

Powinno działać ;)

@sszz: przeczytaj kompendium. W Delphi jest 'else', oraz (jak już napisał RedbaK) 'try except'.

0

Chwilę nie odpisywałem i się tym nie zajmowałem. Jak pisałem wcześniej to nie działa. Zaznaczenie przeskakuje z jednego na drugi kilka razy w ciągu sekundy i program się wysypuje. Udało mi się jednak przed chwilą to ustawić. Przykładowo:

if
CheckBox1.Checked = true
then
ShowMessage('1')
else if
CheckBox2.Checked = true
then
ShowMessage('2')
else if
CheckBox2.Checked = false
then
ShowMessage('3);
0

Ten tekt
"" is not vaild floating value
znaczy że puste miejsce jest nie popratwną wartością typu Extended.
Jeżeli nic nie wpiszesz do Edit, a potem zrobisz tak

Zmienna := StrToFloat(Edit1.Text); //Zakładając że zmienna jest typu Extended

To wywali taki błąd.

Zrub tak:

if Length(Edit1.Text) > 0 then   //Jeżeli Długosc Edit1 jest większa od 0 to
  Zmienna := StrTofloat(Edit1.Text)  //Do zmiennej Zmianna przypisz wartość Edit1
    else  //A jeżeli nie to
      Zmienna := 0;  // Do zmiennej Zmianna przypisz wartośc 0;

I dodaj takie coś:

procedure Form1.Edit1OnKeyPress({nie pamiętam co tu się wpisuje} var Key:Word);
begin
if not (Key in['0'..'9', '.', #8]) then //Jeżeli Key jest różny od znaków 0-9, kropka i backspace to
  Key := #0;  //Nie pisz nic
end;
0
Patryk27 napisał(a)

Mocno przekombinowane :/

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
 CheckBox2.Checked := Not CheckBox1.Checked;
end;

procedure TForm1.CheckBox2Click(Sender: TObject);
begin
 CheckBox1.Checked := Not CheckBox2.Checked;
end;

Powinno działać ;)

@sszz: przeczytaj kompendium. W Delphi jest 'else', oraz (jak już napisał RedbaK) 'try except'.

No przekombinowane hehe, ale tak to jest jak się pisze posty po litrze Krupnika. :)

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