TListBox i nowe formy

N9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 125
0

Szukałem już w internecie ale nie znalazłem odpowiedzi, mam kilka pytań:

  1. Jak zrobić, żeby po wybraniu opcji w TlistBox opcji (np. kartkówka), w TEdit pokazała się liczba (np 3)

  2. Jak zrobić, by nowa forma po kliknięciu na button otwierała się w tym samym okienku.

Będę bardzo wdzięczny za pomoc, bo męczę się nad tym cały dzień.

Z góry dziękuję!

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10227
0

A, skąd w ListBox będzie słowo "kratkówka" będzie tam z góry?
Skąd ma się wziąźć liczba 3?

Kopiuj
if Listbox1.Items.Strings[Listbox1.ItemIndex] = 'kratkówka' then Edit1.Text := '3';

A formę musisz zrobić dynamicznie.

Kopiuj
var
  Forma : TForm;
begin
  Forma := TForm.Create(Self);
  with Forma do
    begin 
      Parent := Self;
      //tutaj uzupełnij takie właściwości jak Height, Width, Left, Top itp.
    end;
end;
N9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 125
0

a to

if Listbox1.Items.Strings[Listbox1.ItemIndex] = 'kratkówka' then Edit1.Text := '3';
to wkleić przy TListBox, czy przy przycisku, czy przy tym TEdit, gdzie ma się 3 pojawić ??

Dobra już wiem, nie działało, bo zamiast kartkówka napisałeś kratkówka

OGÓLNIE WIELKIE DZIĘKI

N9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 125
0

a jak zrobić, żeby po kliknięciu na button zresetować wybór w TListBox

i jak by ktoś mógł mi powiedzieć, co jest źle w tym kodzie:

if s1.Text > '4' then oc.Text := '6';

bo próbuję zrobić tak, że
jeżeli TEdit1 jest większy od 3,6, to TEdit2 ma się równać 4

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10227
1

Nie można porównywać który string jest większy. To tak jakbyś chciał porównać słowa "jabłko" i "pomarańcz". Żeby porównywać wielkości liczb, musisz użyć typu liczbowego jak np. Integer, Byte, SmallInt

Kopiuj
if IntToStr(Edit1.Text) > 4 then...
norbert95 napisał(a)

a jak zrobić, żeby po kliknięciu na button zresetować wybór w TListBox
Co to znaczy zresetować?

Jeszcze jedno. Nie ma czegoś takiego jak TEdit1, TEdit2.
Klasa TEdit, to klasa pola do wpisywania. Za to Edit1, Edit2 to są obiekty tej klasy. Jakby Ci to łatwo zobrazować...?
Np. Masz sad (ten sad to program). W sadzie są różne rodzaje drzew, Np. Wisnia, Jabłko, Śliwka. Z Każdego rodzaju masz po 3 drzewa, które sobie nazwałeś Wiśnia1, Wiśnia2, Wiśnia3 itd.

I właśnie Wiśnia, Jabłko to są tak jakby klasy a Wiśnia1, Wiśnia2... to są jego obiekty.
I się tak umówiono że nazwy klas zaczynane są od litery T, stąd TEdit. Nazwy obiektów sie już pisze normalnie.

N9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 125
0

Ktoś sobie powybiera z tych opcji, i przeliczy sobie ( bo to program do liczenia średniej ważonej), a potem chce jeszcze raz, i chce, żeby te wybory się skasowały i program pokazał, jakby tyle co był włączony.

N9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 125
0
Kopiuj
 unit srednia;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons;

type
  Tf2 = class(TForm)
    o4: TEdit;
    r4: TEdit;
    o5: TEdit;
    r5: TEdit;
    s1: TEdit;
    Button1: TButton;
    o3: TEdit;
    r3: TEdit;
    o2: TEdit;
    r2: TEdit;
    o1: TEdit;
    r1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    o6: TEdit;
    r6: TEdit;
    o7: TEdit;
    r7: TEdit;
    o8: TEdit;
    r8: TEdit;
    o9: TEdit;
    r9: TEdit;
    o10: TEdit;
    r10: TEdit;
    Label4: TLabel;
    oc: TEdit;
    ListBox1: TListBox;
    ListBox2: TListBox;
    ListBox3: TListBox;
    ListBox4: TListBox;
    ListBox5: TListBox;
    ListBox6: TListBox;
    ListBox7: TListBox;
    ListBox8: TListBox;
    ListBox9: TListBox;
    ListBox10: TListBox;
    procedure Button1Click(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure ListBox2Click(Sender: TObject);
    procedure ListBox3Click(Sender: TObject);
    procedure ListBox4Click(Sender: TObject);
    procedure ListBox5Click(Sender: TObject);
    procedure ListBox6Click(Sender: TObject);
    procedure ListBox7Click(Sender: TObject);
    procedure ListBox8Click(Sender: TObject);
    procedure ListBox9Click(Sender: TObject);
    procedure ListBox10Click(Sender: TObject);
    procedure ocChange(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  f2: Tf2;

implementation

{$R *.dfm}
procedure Tf2.Button1Click(Sender: TObject);

var

A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, R, S, T, U : Extended;

begin

A := StrToFloat(o1.text);

B := StrtoFloat(o2.text);

C := StrtoFloat(o3.text);

D := StrtoFloat(o4.text);

E := StrtoFloat(o5.text);

F := StrtoFloat(o6.text);

G := StrtoFloat(o7.text);

H := StrtoFloat(o8.text);

I := StrtoFloat(o9.text);

J := StrtoFloat(o10.text);

K := StrtoFloat(r1.text);

L := StrtoFloat(r2.text);

M := StrtoFloat(r3.text);

N := StrtoFloat(r4.text);

O := StrtoFloat(r6.text);

P := StrtoFloat(r7.text);

R := StrtoFloat(r8.text);

S := StrtoFloat(r9.text);

T := StrtoFloat(r10.text);


U :=  (A*K + B*L + C*M + D*N + F*O + G*P + H*R + I*S + J*T) / (K+L+M+N+O+P+R+S+T) ;

s1.Text := FloatToStr(U)


end;

procedure Tf2.ListBox10Click(Sender: TObject);
begin
if Listbox10.Items.Strings[Listbox10.ItemIndex] = 'kartkówka' then r10.Text := '3';
if Listbox10.Items.Strings[Listbox10.ItemIndex] = 'klasówka' then r10.Text := '4';
if Listbox10.Items.Strings[Listbox10.ItemIndex] = 'praca na lekcji' then r10.Text := '2';
if Listbox10.Items.Strings[Listbox10.ItemIndex] = 'zadanie' then r10.Text := '2';
if Listbox10.Items.Strings[Listbox10.ItemIndex] = 'odpowiedź' then r10.Text := '3';
if Listbox10.Items.Strings[Listbox10.ItemIndex] = 'projekt' then r10.Text := '2';
end;

procedure Tf2.ListBox1Click(Sender: TObject);
begin
if Listbox1.Items.Strings[Listbox1.ItemIndex] = 'kartkówka' then r1.Text := '3';
if Listbox1.Items.Strings[Listbox1.ItemIndex] = 'klasówka' then r1.Text := '4';
if Listbox1.Items.Strings[Listbox1.ItemIndex] = 'praca na lekcji' then r1.Text := '2';
if Listbox1.Items.Strings[Listbox1.ItemIndex] = 'zadanie' then r1.Text := '2';
if Listbox1.Items.Strings[Listbox1.ItemIndex] = 'odpowiedź' then r1.Text := '3';
if Listbox1.Items.Strings[Listbox1.ItemIndex] = 'projekt' then r1.Text := '2';
end;

procedure Tf2.ListBox2Click(Sender: TObject);
begin
if Listbox2.Items.Strings[Listbox2.ItemIndex] = 'kartkówka' then r2.Text := '3';
if Listbox2.Items.Strings[Listbox2.ItemIndex] = 'klasówka' then r2.Text := '4';
if Listbox2.Items.Strings[Listbox2.ItemIndex] = 'praca na lekcji' then r2.Text := '2';
if Listbox2.Items.Strings[Listbox2.ItemIndex] = 'zadanie' then r2.Text := '2';
if Listbox2.Items.Strings[Listbox2.ItemIndex] = 'odpowiedź' then r2.Text := '3';
if Listbox2.Items.Strings[Listbox2.ItemIndex] = 'projekt' then r2.Text := '2';
end;

procedure Tf2.ListBox3Click(Sender: TObject);
begin
if Listbox3.Items.Strings[Listbox3.ItemIndex] = 'kartkówka' then r3.Text := '3';
if Listbox3.Items.Strings[Listbox3.ItemIndex] = 'klasówka' then r3.Text := '4';
if Listbox3.Items.Strings[Listbox3.ItemIndex] = 'praca na lekcji' then r3.Text := '2';
if Listbox3.Items.Strings[Listbox3.ItemIndex] = 'zadanie' then r3.Text := '2';
if Listbox3.Items.Strings[Listbox3.ItemIndex] = 'odpowiedź' then r3.Text := '3';
if Listbox3.Items.Strings[Listbox3.ItemIndex] = 'projekt' then r3.Text := '2';
end;

procedure Tf2.ListBox4Click(Sender: TObject);
begin
if Listbox4.Items.Strings[Listbox4.ItemIndex] = 'kartkówka' then r4.Text := '3';
if Listbox4.Items.Strings[Listbox4.ItemIndex] = 'klasówka' then r4.Text := '4';
if Listbox4.Items.Strings[Listbox4.ItemIndex] = 'praca na lekcji' then r4.Text := '2';
if Listbox4.Items.Strings[Listbox4.ItemIndex] = 'zadanie' then r4.Text := '2';
if Listbox4.Items.Strings[Listbox4.ItemIndex] = 'odpowiedź' then r4.Text := '3';
if Listbox4.Items.Strings[Listbox4.ItemIndex] = 'projekt' then r4.Text := '2';

end;

procedure Tf2.ListBox5Click(Sender: TObject);
begin
if Listbox5.Items.Strings[Listbox5.ItemIndex] = 'kartkówka' then r5.Text := '3';
if Listbox5.Items.Strings[Listbox5.ItemIndex] = 'klasówka' then r5.Text := '4';
if Listbox5.Items.Strings[Listbox5.ItemIndex] = 'praca na lekcji' then r5.Text := '2';
if Listbox5.Items.Strings[Listbox5.ItemIndex] = 'zadanie' then r5.Text := '2';
if Listbox5.Items.Strings[Listbox5.ItemIndex] = 'odpowiedź' then r5.Text := '3';
if Listbox5.Items.Strings[Listbox5.ItemIndex] = 'projekt' then r5.Text := '2';
end;

procedure Tf2.ListBox6Click(Sender: TObject);
begin
if Listbox6.Items.Strings[Listbox6.ItemIndex] = 'kartkówka' then r6.Text := '3';
if Listbox6.Items.Strings[Listbox6.ItemIndex] = 'klasówka' then r6.Text := '4';
if Listbox6.Items.Strings[Listbox6.ItemIndex] = 'praca na lekcji' then r6.Text := '2';
if Listbox6.Items.Strings[Listbox6.ItemIndex] = 'zadanie' then r6.Text := '2';
if Listbox6.Items.Strings[Listbox6.ItemIndex] = 'odpowiedź' then r6.Text := '3';
if Listbox6.Items.Strings[Listbox6.ItemIndex] = 'projekt' then r6.Text := '2';
end;

procedure Tf2.ListBox7Click(Sender: TObject);
begin
if Listbox7.Items.Strings[Listbox7.ItemIndex] = 'kartkówka' then r7.Text := '3';
if Listbox7.Items.Strings[Listbox7.ItemIndex] = 'klasówka' then r7.Text := '4';
if Listbox7.Items.Strings[Listbox7.ItemIndex] = 'praca na lekcji' then r7.Text := '2';
if Listbox7.Items.Strings[Listbox7.ItemIndex] = 'zadanie' then r7.Text := '2';
if Listbox7.Items.Strings[Listbox7.ItemIndex] = 'odpowiedź' then r7.Text := '3';
if Listbox7.Items.Strings[Listbox7.ItemIndex] = 'projekt' then r7.Text := '2';
end;

procedure Tf2.ListBox8Click(Sender: TObject);
begin
if Listbox8.Items.Strings[Listbox8.ItemIndex] = 'kartkówka' then r8.Text := '3';
if Listbox8.Items.Strings[Listbox8.ItemIndex] = 'klasówka' then r8.Text := '4';
if Listbox8.Items.Strings[Listbox8.ItemIndex] = 'praca na lekcji' then r8.Text := '2';
if Listbox8.Items.Strings[Listbox8.ItemIndex] = 'zadanie' then r8.Text := '2';
if Listbox8.Items.Strings[Listbox8.ItemIndex] = 'odpowiedź' then r8.Text := '3';
if Listbox8.Items.Strings[Listbox8.ItemIndex] = 'projekt' then r8.Text := '2';
end;

procedure Tf2.ListBox9Click(Sender: TObject);
begin
if Listbox9.Items.Strings[Listbox9.ItemIndex] = 'kartkówka' then r9.Text := '3';
if Listbox9.Items.Strings[Listbox9.ItemIndex] = 'klasówka' then r9.Text := '4';
if Listbox9.Items.Strings[Listbox9.ItemIndex] = 'praca na lekcji' then r9.Text := '2';
if Listbox9.Items.Strings[Listbox9.ItemIndex] = 'zadanie' then r9.Text := '2';
if Listbox9.Items.Strings[Listbox9.ItemIndex] = 'odpowiedź' then r9.Text := '3';
if Listbox9.Items.Strings[Listbox9.ItemIndex] = 'projekt' then r9.Text := '2';
end;

procedure Tf2.ocChange(Sender: TObject);
begin
if IntToStr(s1.Text) > 4 then IntToStr(oc.Text) = 5;
end;
end.

Jest to program do liczenia średniej ważonej.

Jak ktoś już sobie przeliczy, to ma pozaznaczane to wybory rang, więc jak będzie chciał jeszcze raz to potrzeba jest funkcja zresetowania wyborów czyli przywrócenie stanu sprzed wyborów.

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10227
0

Ten kod jest bardzo amatorski. Zamiast tak wielu zmiennych A, B, C lepiej zrobić tablicę

Kopiuj
var
  Tablica : array [1..20] of Extended;

A to co jest niżej można zapisać tak

Kopiuj
var 
  Tablica : array [1..20] of Extended;
  I, J : Integer;
begin
  for J := 1 to 2 do   //Pętla 1 do 2
    for I := 1 to 10 do    //Pętla 1 do 10
      Tablica[I*J] := StrToFloat(FindComponent(IntToStr(J) + IntToStr(I)).Text);
     {Wtedy do 20 elementów tablicy, zostaje przypisana wartość Text, kompoentu którego pierwszą literą nazwy jest J, a drugą I. Dlatego zamiast o1, o2, o3 napisz 11, 12, 13... a zamiast r1, r2, r3 21, 22, 23...}
end;

Możesz też dać jedno zdarzenie dla 10 TListBox. Zamiast sprawdzać, jaki tekst jest w linji możesz po prostu wiedzieć jaki numer ma linja.

Kopiuj
procedure TForm1.JednoZdarzenie(Sender: TObject);
begin
  Case Integer((Sender as TListBox).Name[8]) of  // Wtedy bierze numer listboxa. Wyraz "ListBox" ma 7 liter, więc jego numer jest na 8 miejscu.
    Case (Sender as TListBox).Items of
      0: FindComponent('r' + Integer((Sender as TListBox).Name[8]).Text := '3';
      1: FindComponent('r' + Integer((Sender as TListBox).Name[8]).Text := '4';
      2: FindComponent('r' + Integer((Sender as TListBox).Name[8]).Text := '2';
      3: FindComponent('r' + Integer((Sender as TListBox).Name[8]).Text := '2';
      4: FindComponent('r' + Integer((Sender as TListBox).Name[8]).Text := '3';
      5: FindComponent('r' + Integer((Sender as TListBox).Name[8]).Text := '2';
    end;
  end;  
end;

Hmm... ciekawe który zapis jest opytmalniejszy, bardziej czytelny i profesjonalniejszy? Jak czegoś nie rozumiesz to Ci mogę wytłumaczyć.

Tylko wiesz że w zakładce Event, każdego TListBox, w pasku OnClick musisz podać to zdarzenie.

N9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 125
0

Na razie nie bawię się w tablicę,

a czemu tu jest błąd??:

Kopiuj
if IntToStr(s1.Text) > 4 then IntToStr(oc.Text) = 5;
Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10227
0

Bo
A) operator = służy do sprawdzania.
operator := służy do przypisywania wartości.

b) Możesz bezproblemowo zmieniać typ tylko prawej strony. Więc żeby to działało powinno być

Kopiuj
if StrToInt(s1.Text) > 4 then oc.Text := '5';

albo

Kopiuj
if StrToInt(s1.Text) > 4 then oc.Text := IntToStr(5);
N9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 125
0

Błąd, nie działa

N9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 125
0
Kopiuj
[DCC Error] Form2.pas(128): E2250 There is no overloaded version of 'IntToStr' that can be called with these arguments
[DCC Warning] Form2.pas(128): W1058 Implicit string cast with potential data loss from 'string' to 'ShortString'
 [DCC Error] Form2.pas(128): E2003 Undeclared identifier: 'oc'
Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10227
0

Co do tego Reset to przyznam się, nie wiedziałem...

A co do dynamicznego tworzenia komponentów (w tym form) to ogólna zasada jest taka:

Kopiuj
var
  Forma : TForm;

Deklaracja jakiej klasy ma być obiekt

Kopiuj
Forma := TForm.Create(Self);

Tworzenie Formy z parametrem Self, zamiast tego można wpisać jaką kolwiek kontrolę TWinControl, czyli jakąś formę.

Kopiuj
with Forma do  //instrukcja wiążąca with... do...  nie trzeba pisać wile razy tego samego.
  begin
     Parent := Self;  //Czyli że forma będzie na formie, na której akurat jest kod
     Height := 100;
     Width := 100;
  {powtarzać z Left, Top, Caption itp.}
     Caption := 'Form1';
  end;

Cały kod:

Kopiuj
var
  Forma : TForm;
begin
Forma := TForm.Create(Self);
with Forma do  //instrukcja wiążąca with... do...  nie trzeba pisać wile razy tego samego.
  begin
    Parent := Self;  //Czyli że forma będzie na formie, na której akurat jest kod
    Height := 100;
    Width := 100;
  {powtarzać z Left, Top, Caption itp.}
    Caption := 'Form1';
  end;
end;
N9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 125
0

OK,
a jak zrobić, żeby ten kod:

Kopiuj
 if StrToInt(s1.Text) > 2 then oc.Text := '5';

obsługiwał ułamki i żeby można było określić że
jeżeli s1.Tekst jest > np. 0d 2,6, a mniejsze od 3,6 to wtedy w oc.Tekst napisz 2

pelsta
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 819
0
TomRiddle napisał(a)

Nie można porównywać który string jest większy. To tak jakbyś chciał porównać słowa "jabłko" i "pomarańcz".

Można porównywać stringi ale nie w takim sensie jak liczby tylko alfabetycznie (po kodach ASCII np.). W tym sensie 'pomarańcz' > 'jabłko', '5'>'4', '5'>'40' itp
Wykorzystuje się to np. przy sortowaniu stringów.

olesio
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
  • Postów: 4191
0

TomRiddle: no zwracam honor, często masz ostatnio zastrzeżenia do moich postów i pytasz też czasami o rzeczy które byś ogarnąl przy odrobinie samodzielności, ale tutaj mialeś cierpliwośc pomagając norbert95 i za to Tobie chwała, bo ja topiero teraz czytam forum bo walczylem z http://olesio.eu/fb . A do norbert95 prośba: pokombinuj trochę samodzielnie, poczytaj kurs z podstawami na 4p, a nauczysz się wiecej niż co chwile pytając, a i satysfakcja z pisania samodzielnie programu będzie większa. Poza tym 5 dni w Delphi to przy obecnej dostępności materiałów na temat Delphi i wedlug mnie - ogromnej łatwości z jaką można opanować ten język na starcie to bardzo dużo czasu :)

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10227
0

@nortbert Liczby z przecinkiem to typy Extended albo Double.
Zmiana string na extended StrToFloat
Zmiana extended na string FloatToStr

Kopiuj
if (StrToFloat(Edit1.Text) > 2.6) and
   (StrToFloat(Edit1.Text) < 3.6) then Oc.Text := '2';

Uwaga! W Liczbach zmiennoprzecinkowych, wbrew pozorom nie stawia się przecinka tylko kropkę .

N9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 125
0

Dzięki wszystkim za wytrwałość, udam się do jakiejś lektury, jaką polecacie?

pelsta
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 819
0
TomRiddle napisał(a)

Uwaga! W Liczbach zmiennoprzecinkowych, wbrew pozorom nie stawia się przecinka tylko kropkę .

I tutaj się mylisz. Zależy to od ustawień w systemie operacyjnym i ewentualnego użycia zmiennej DecimalSeparator.

N9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 125
0

Kurcze, ale nie mogę znaleźć o tym resetowaniu wyborów, bo nawet nie wiem jak tego szukać po jakim haśle czy coś...

olesio
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
  • Postów: 4191
0

Możesz sprecyzować co masz na myśli przez Resetowanie. Chodzi Tobie o Items.Clear; albo Lines.Clear; czy też samo Clear? Czy ustawianie ItemIndex := -1; Podaj przykład co chcesz osiągnąć. Chcesz żeby komponent wyglądał identycznie jak po uruchomieniu programu czy o coś innego?

EDIT: nie wiem czy o to chodzi, ale dopisuje... Przydługie czego niektórzy nie lubią, ale jak Ciebie krótkie i konkretne naprowadzenia przerażają, to ja nic nie poradze. Czytać, kombinować samemu, szukać informacji, a wszystko powoli stanie się jasne.

Możesz zapisywać ustawienia początkowe komponentów przy użyciu TStream i WriteComponent oraz ReadComponent. Przykład poniżej. Kolejnośc zapisu i odczytu jest ważna. Zapisz sobie do pliku jakiego i gdzie chcesz, o ile jest pod dopuszczalną nazwą oraz masz prawa do zapisu do danej lokalizacji, bo nie wiem jakiego systemu używasz i czy masz włączone UAC. Zapisz komponenty w OnCreate, a jeżeli zawsze są takie same to można dołaczyć plik z ustawieniami do zasobów i z nich odczytać. Pogoogluj sobie na ten temat. Ale jak wolisz z pliku to przy OnCreate zapis do pliku, a w żądanym momencie odczyt i komponenty będą wyglądać tak jak je sobie zaprojektowałeś w trakcie wizualnego ustawiania.

Kopiuj
//..
procedure TForm1.Button1Click(Sender: TObject);
var
  MS : TMemoryStream;
begin
  MS := TMemoryStream.Create;
  MS.WriteComponent(Edit1);
  MS.WriteComponent(Edit2);
  MS.SaveToFile('D:\test.bin');
  MS.Free;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  MS : TMemoryStream;
begin
  MS := TMemoryStream.Create;
  MS.LoadFromFile('D:\test.bin');
  MS.ReadComponent(Edit1);
  MS.ReadComponent(Edit2);
  MS.Free;
end;
//...
N9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 125
0

A Edit.1 i Edit.2 mogą być na innej formie niż button1??

olesio
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
  • Postów: 4191
0

Okazalo się, że chyba dla ListBox musi być TFileStream, a nie TMemoryStream. Ale czy tak trudno wpisać w google: delphi listbox readcomponent i pierwszy link http://www.delphicorner.f9.co.uk/articles/op11.htm - ręce mi opadają jak widze taki brak samodzielności, rozumiem każdy kiedyś zaczynał, masz Delphi od niedawna i tak dalej, ale przecież nie żyjesz w Korei Połnocnej gdzie chyba w ogóle nie ma powszechnego netu, a ludzie się boją pomyśleć o google i wolności ;/

N9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 125
0

A jescze mam taki problem, którego nie mogę rozwiązać, otóż mam taki kod programu:

Kopiuj
unit Form2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ButtonGroup, jpeg, ExtCtrls;

type
  Tf2 = class(TForm)
    o4: TEdit;
    r4: TEdit;
    o5: TEdit;
    r5: TEdit;
    s1: TEdit;
    Button1: TButton;
    o3: TEdit;
    r3: TEdit;
    o2: TEdit;
    r2: TEdit;
    o1: TEdit;
    r1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    o6: TEdit;
    r6: TEdit;
    o7: TEdit;
    r7: TEdit;
    o8: TEdit;
    r8: TEdit;
    o9: TEdit;
    r9: TEdit;
    o10: TEdit;
    r10: TEdit;
    Label4: TLabel;
    oc: TEdit;
    ListBox1: TListBox;
    ListBox2: TListBox;
    ListBox3: TListBox;
    ListBox4: TListBox;
    ListBox5: TListBox;
    ListBox6: TListBox;
    ListBox7: TListBox;
    ListBox8: TListBox;
    ListBox9: TListBox;
    ListBox10: TListBox;
    BitBtn1: TBitBtn;
    Label5: TLabel;
    RadioButton1: TRadioButton;
    RadioButton: TRadioButton;
    Image1: TImage;
    Button2: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure ListBox2Click(Sender: TObject);
    procedure ListBox3Click(Sender: TObject);
    procedure ListBox4Click(Sender: TObject);
    procedure ListBox5Click(Sender: TObject);
    procedure ListBox6Click(Sender: TObject);
    procedure ListBox7Click(Sender: TObject);
    procedure ListBox8Click(Sender: TObject);
    procedure ListBox9Click(Sender: TObject);
    procedure ListBox10Click(Sender: TObject);
    procedure s1Change(Sender: TObject);
    procedure RadioButton1Click(Sender: TObject);
    procedure RadioButtonClick(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  f2: Tf2;

implementation

{$R *.dfm}
procedure Tf2.Button1Click(Sender: TObject);

var

A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, R, S, T, U : Extended;

begin

A := StrToFloat(o1.text);

B := StrtoFloat(o2.text);

C := StrtoFloat(o3.text);

D := StrtoFloat(o4.text);

E := StrtoFloat(o5.text);

F := StrtoFloat(o6.text);

G := StrtoFloat(o7.text);

H := StrtoFloat(o8.text);

I := StrtoFloat(o9.text);

J := StrtoFloat(o10.text);

K := StrtoFloat(r1.text);

L := StrtoFloat(r2.text);

M := StrtoFloat(r3.text);

N := StrtoFloat(r4.text);

O := StrtoFloat(r6.text);

P := StrtoFloat(r7.text);

R := StrtoFloat(r8.text);

S := StrtoFloat(r9.text);

T := StrtoFloat(r10.text);


U :=  (A*K + B*L + C*M + D*N + F*O + G*P + H*R + I*S + J*T) / (K+L+M+N+O+P+R+S+T) ;

s1.Text := FloattoStr(U)


end;




procedure Tf2.Button2Click(Sender: TObject);
var
  MS : TMemoryStream;
begin
  MS := TMemoryStream.Create;

  MS.WriteComponent(o1);
  MS.WriteComponent(o2);
  MS.WriteComponent(o3);
  MS.WriteComponent(o4);
  MS.WriteComponent(o5);
  MS.WriteComponent(o6);
  MS.WriteComponent(o7);
  MS.WriteComponent(o8);
  MS.WriteComponent(o9);
  MS.WriteComponent(o10);

  MS.WriteComponent(r1);
  MS.WriteComponent(r2);
  MS.WriteComponent(r3);
  MS.WriteComponent(r4);
  MS.WriteComponent(r5);
  MS.WriteComponent(r6);
  MS.WriteComponent(r7);
  MS.WriteComponent(r8);
  MS.WriteComponent(r9);
  MS.WriteComponent(r10);

  MS.SaveToFile('E:\test.bin');
  MS.Free;
end;

procedure Tf2.Edit1Change(Sender: TObject);
begin

**if (Edit1.Text) = '3+' then O1.Text := '3.6' else O1.Text := '0' ;**__foo__
end;

procedure Tf2.ListBox10Click(Sender: TObject);
begin
if Listbox10.Items.Strings[Listbox10.ItemIndex] = 'kartkówka' then r10.Text := '3';
if Listbox10.Items.Strings[Listbox10.ItemIndex] = 'klasówka' then r10.Text := '4';
if Listbox10.Items.Strings[Listbox10.ItemIndex] = 'praca na lekcji' then r10.Text := '2';
if Listbox10.Items.Strings[Listbox10.ItemIndex] = 'zadanie' then r10.Text := '2';
if Listbox10.Items.Strings[Listbox10.ItemIndex] = 'odpowiedź' then r10.Text := '3';
if Listbox10.Items.Strings[Listbox10.ItemIndex] = 'projekt' then r10.Text := '2';
end;

procedure Tf2.ListBox1Click(Sender: TObject);
begin
if Listbox1.Items.Strings[Listbox1.ItemIndex] = 'kartkówka' then r1.Text := '3';
if Listbox1.Items.Strings[Listbox1.ItemIndex] = 'klasówka' then r1.Text := '4';
if Listbox1.Items.Strings[Listbox1.ItemIndex] = 'praca na lekcji' then r1.Text := '2';
if Listbox1.Items.Strings[Listbox1.ItemIndex] = 'zadanie' then r1.Text := '2';
if Listbox1.Items.Strings[Listbox1.ItemIndex] = 'odpowiedź' then r1.Text := '3';
if Listbox1.Items.Strings[Listbox1.ItemIndex] = 'projekt' then r1.Text := '2';
end;

procedure Tf2.ListBox2Click(Sender: TObject);
begin
if Listbox2.Items.Strings[Listbox2.ItemIndex] = 'kartkówka' then r2.Text := '3';
if Listbox2.Items.Strings[Listbox2.ItemIndex] = 'klasówka' then r2.Text := '4';
if Listbox2.Items.Strings[Listbox2.ItemIndex] = 'praca na lekcji' then r2.Text := '2';
if Listbox2.Items.Strings[Listbox2.ItemIndex] = 'zadanie' then r2.Text := '2';
if Listbox2.Items.Strings[Listbox2.ItemIndex] = 'odpowiedź' then r2.Text := '3';
if Listbox2.Items.Strings[Listbox2.ItemIndex] = 'projekt' then r2.Text := '2';
end;

procedure Tf2.ListBox3Click(Sender: TObject);
begin
if Listbox3.Items.Strings[Listbox3.ItemIndex] = 'kartkówka' then r3.Text := '3';
if Listbox3.Items.Strings[Listbox3.ItemIndex] = 'klasówka' then r3.Text := '4';
if Listbox3.Items.Strings[Listbox3.ItemIndex] = 'praca na lekcji' then r3.Text := '2';
if Listbox3.Items.Strings[Listbox3.ItemIndex] = 'zadanie' then r3.Text := '2';
if Listbox3.Items.Strings[Listbox3.ItemIndex] = 'odpowiedź' then r3.Text := '3';
if Listbox3.Items.Strings[Listbox3.ItemIndex] = 'projekt' then r3.Text := '2';
end;

procedure Tf2.ListBox4Click(Sender: TObject);
begin
if Listbox4.Items.Strings[Listbox4.ItemIndex] = 'kartkówka' then r4.Text := '3';
if Listbox4.Items.Strings[Listbox4.ItemIndex] = 'klasówka' then r4.Text := '4';
if Listbox4.Items.Strings[Listbox4.ItemIndex] = 'praca na lekcji' then r4.Text := '2';
if Listbox4.Items.Strings[Listbox4.ItemIndex] = 'zadanie' then r4.Text := '2';
if Listbox4.Items.Strings[Listbox4.ItemIndex] = 'odpowiedź' then r4.Text := '3';
if Listbox4.Items.Strings[Listbox4.ItemIndex] = 'projekt' then r4.Text := '2';

end;

procedure Tf2.ListBox5Click(Sender: TObject);
begin
if Listbox5.Items.Strings[Listbox5.ItemIndex] = 'kartkówka' then r5.Text := '3';
if Listbox5.Items.Strings[Listbox5.ItemIndex] = 'klasówka' then r5.Text := '4';
if Listbox5.Items.Strings[Listbox5.ItemIndex] = 'praca na lekcji' then r5.Text := '2';
if Listbox5.Items.Strings[Listbox5.ItemIndex] = 'zadanie' then r5.Text := '2';
if Listbox5.Items.Strings[Listbox5.ItemIndex] = 'odpowiedź' then r5.Text := '3';
if Listbox5.Items.Strings[Listbox5.ItemIndex] = 'projekt' then r5.Text := '2';
end;

procedure Tf2.ListBox6Click(Sender: TObject);
begin
if Listbox6.Items.Strings[Listbox6.ItemIndex] = 'kartkówka' then r6.Text := '3';
if Listbox6.Items.Strings[Listbox6.ItemIndex] = 'klasówka' then r6.Text := '4';
if Listbox6.Items.Strings[Listbox6.ItemIndex] = 'praca na lekcji' then r6.Text := '2';
if Listbox6.Items.Strings[Listbox6.ItemIndex] = 'zadanie' then r6.Text := '2';
if Listbox6.Items.Strings[Listbox6.ItemIndex] = 'odpowiedź' then r6.Text := '3';
if Listbox6.Items.Strings[Listbox6.ItemIndex] = 'projekt' then r6.Text := '2';
end;

procedure Tf2.ListBox7Click(Sender: TObject);
begin
if Listbox7.Items.Strings[Listbox7.ItemIndex] = 'kartkówka' then r7.Text := '3';
if Listbox7.Items.Strings[Listbox7.ItemIndex] = 'klasówka' then r7.Text := '4';
if Listbox7.Items.Strings[Listbox7.ItemIndex] = 'praca na lekcji' then r7.Text := '2';
if Listbox7.Items.Strings[Listbox7.ItemIndex] = 'zadanie' then r7.Text := '2';
if Listbox7.Items.Strings[Listbox7.ItemIndex] = 'odpowiedź' then r7.Text := '3';
if Listbox7.Items.Strings[Listbox7.ItemIndex] = 'projekt' then r7.Text := '2';
end;

procedure Tf2.ListBox8Click(Sender: TObject);
begin
if Listbox8.Items.Strings[Listbox8.ItemIndex] = 'kartkówka' then r8.Text := '3';
if Listbox8.Items.Strings[Listbox8.ItemIndex] = 'klasówka' then r8.Text := '4';
if Listbox8.Items.Strings[Listbox8.ItemIndex] = 'praca na lekcji' then r8.Text := '2';
if Listbox8.Items.Strings[Listbox8.ItemIndex] = 'zadanie' then r8.Text := '2';
if Listbox8.Items.Strings[Listbox8.ItemIndex] = 'odpowiedź' then r8.Text := '3';
if Listbox8.Items.Strings[Listbox8.ItemIndex] = 'projekt' then r8.Text := '2';
end;

procedure Tf2.ListBox9Click(Sender: TObject);
begin
if Listbox9.Items.Strings[Listbox9.ItemIndex] = 'kartkówka' then r9.Text := '3';
if Listbox9.Items.Strings[Listbox9.ItemIndex] = 'klasówka' then r9.Text := '4';
if Listbox9.Items.Strings[Listbox9.ItemIndex] = 'praca na lekcji' then r9.Text := '2';
if Listbox9.Items.Strings[Listbox9.ItemIndex] = 'zadanie' then r9.Text := '2';
if Listbox9.Items.Strings[Listbox9.ItemIndex] = 'odpowiedź' then r9.Text := '3';
if Listbox9.Items.Strings[Listbox9.ItemIndex] = 'projekt' then r9.Text := '2';
end;

procedure Tf2.RadioButton1Click(Sender: TObject);
begin
if true then r1.Visible := true;
if true then r2.Visible := true;
if true then r3.Visible := true;
if true then r4.Visible := true;
if true then r5.Visible := true;
if true then r6.Visible := true;
if true then r7.Visible := true;
if true then r8.Visible := true;
if true then r9.Visible := true;
if true then r10.Visible := true;

if True then radiobutton.Visible := true;

end;

procedure Tf2.RadioButtonClick(Sender: TObject);
begin
if true then r1.Visible := false;
if true then r2.Visible := false;
if true then r3.Visible := false;
if true then r4.Visible := false;
if true then r5.Visible := false;
if true then r6.Visible := false;
if true then r7.Visible := false;
if true then r8.Visible := false;
if true then r9.Visible := false;
if true then r10.Visible := false;
if True then RadioButton.Visible := false


end;

procedure Tf2.s1Change(Sender: TObject);
begin
if (StrToFloat(s1.Text) >= 1) and
   (StrToFloat(s1.Text) < 1.6) then Oc.Text := '1';
if (StrToFloat(s1.Text) >= 1.6) and
   (StrToFloat(s1.Text) < 2.6) then Oc.Text := '2';
if (StrToFloat(s1.Text) >= 2.6) and
   (StrToFloat(s1.Text) < 3.6) then Oc.Text := '3';
if (StrToFloat(s1.Text) >= 4.6) and
   (StrToFloat(s1.Text) < 4.6) then Oc.Text := '4';
if (StrToFloat(s1.Text) >= 4.6) and
   (StrToFloat(s1.Text) < 5.6) then Oc.Text := '5';
if (StrToFloat(s1.Text) >= 5.6) and
   (StrToFloat(s1.Text) <= 6) then Oc.Text := '6';
end;

end. 

(Wiem, że jest amatorski, ale niech będzie) i to co jest pogrubione i podkreślone to napisałem sam i działa, bo jak wpisze do edit1.Text '3+', to 01.Text = 3.6, tylko że dalej program nie liczy mi średniej ważonej, tylko wywala błąd:

'3.6' is not a vaild floating point value
i to będzie coś z jakąś funkcją, tylko nie wiem z którą...

Wiecie, jak to zrobić, żeby liczyło... ???

Z góry dziękuję za pomoc

pelsta
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 819
0
norbert95 napisał(a)

tylko że dalej program nie liczy mi średniej ważonej, tylko wywala błąd:

'3.6' is not a vaild floating point value
i to będzie coś z jakąś funkcją, tylko nie wiem z którą...
Wiecie, jak to zrobić, żeby liczyło... ???

Przeczytałeś to, co napisałem powyżej? http://4programmers.net/Forum/Newbie/104555-tlistbox_i_nowe_formy?p=733723#id733723

N9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 125
0

Powiedzcie mi tylko jakiem mam użyć funkcji, naprowadźcie jakoś czy to ma być InToStr czu FloatToStr czy jeszcze jakaś inna nazwa??

Plz bo kombinuje już trzecią godzinę... Plisss

pelsta
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 819
0

Przetłumacz sobie komunikat o błędzie ('3.6' is not a valid floating point value) i przeczytaj to, co napisałem powyżej. Koniecznie musisz zabrać się za jakiś podręcznik albo kurs o programowaniu. Zacznij systematyczną (to znaczy od rzeczy łatwiejszych do trudniejszych) naukę programowania i wtedy nie będziesz zadawał takich pytań na forum.

N9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 125
0

Napisałeś:

TomRiddle:Uwaga! W Liczbach zmiennoprzecinkowych, wbrew pozorom nie stawia się przecinka tylko kropkę .

I tutaj się mylisz. Zależy to od ustawień w systemie operacyjnym i ewentualnego użycia zmiennej DecimalSeparator.

i nic z tego nie wnioskuję. :(

Nie ja już nie mam siły, czytam pracę pana Adama o typach zmiennych, ale nadal nie wiem jaki typ mam zastosować.

Proszę pomóżcie mi... <prosi>

olesio
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
  • Postów: 4191
0

Ech, poczytaj najpierw caly kurs, pokombinuj samodzielnie, bo Tobie śie pisze i radzi, a Ty co chwila z czymś innym masz problem. Zobacz sobie poniższy kod. A i jeszcze jedno, kod przed wklejeniem formatuj tutaj na przyklad programem z http://olesio.eu/delfor i nie stawiaj pustej linii co instrukcje, bo wtedy Twój kod jest trudny do szybszego odczytania, wręcz wedlug mnie nieczytelny. A i DecimalSeparator możesz sobie ustawić sam na dowolny znak, jednak logika raczej zakłada aby był to w przypadku, jak dla użytkownika Polaka przecinek.

Kopiuj
var
  S : string;
  X : Double;
begin
  S := Edit1.Text;
  if TryStrToFloat(S, X) = True then
  begin
    ShowMessage('Wszystko w porządku. Wpisana liczba to: ' + FloatToStr(X));
  end
  else
  begin
    ShowMessage('Błędna liczba rzeczywista.' + #13#10 +
      'Sprawdź czy podaleś odpowiedni separator dzieśietny.' + #13#10 +
      'W przypadku Twoich ustawień jest to: "' + DecimalSeparator + '".');
  end;
end;
N9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 125
0

ok, ale nie bardzo wiem po co te show message,
powiedz mi, czy ja mam zmienić ten kawałek:

Kopiuj
procedure Tf2.Button1Click(Sender: TObject);

var

A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, R, S, T, U : Extended;
begin

A := StrtoFloat (o1.text);

B := StrtoFloat(o2.text);

C := StrtoFloat(o3.text);

D := StrtoFloat(o4.text);

E := StrtoFloat(o5.text);

F := StrtoFloat(o6.text);

G := StrtoFloat(o7.text);

H := StrtoFloat(o8.text);

I := StrtoFloat(o9.text);

J := StrtoFloat(o10.text);

K := StrtoFloat(r1.text);

L := StrtoFloat(r2.text);

M := StrtoFloat(r3.text);

N := StrtoFloat(r4.text);

O := StrtoFloat(r6.text);

P := StrtoFloat(r7.text);

R := StrtoFloat(r8.text);

S := StrtoFloat(r9.text);

T := StrtoFloat(r10.text);


U :=  (A*K + B*L + C*M + D*N + F*O + G*P + H*R + I*S + J*T) / (K+L+M+N+O+P+R+S+T) ;

s1.Text := FloattoStr(U)


end; 

dobrze myślę to chodzi o funkcję StrtoFloat ona jest tutaj zła, bo nie obsługuje liczb z przecinkiem.

Tak?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.