![]() |
Memos und Buttons
Hi,
haben mal eine frage. Wir möchten mit einem Button die zahl 15 in ein memo feld eintragen. wie macht man das :D es wird kein fehler angezeigt, aber auch keine Zahl. hoffen auf schnelle hilfe vielen dank im Vorraus. Gruß deppen |
AW: Memos und Buttons
Wie sieht denn Euer Code aus? Wenn es keinen gibt, werden auch keine Fehlermeldungen ausgegeben :stupid:
|
AW: Memos und Buttons
procedure TForm1.Button15Click(Sender: TObject);
type tZahlen=array[0..15] of integer; var i: integer; Begin i:= 15 Memo_anzeige_noten.Lines.add(IntToStr(i)); end; end. naja wir wollten das halt mit meheren buttons machen und damit einen Notendurchschneitsrechner programieren bei dem die einzelnen zahlen in das memo geschrieben werden und dann automatisch zusammengerechnet werden. das war jedenfalls der plan :D |
AW: Memos und Buttons
Benutzt doch bitte Delphi-Tags für Code, das ist die "Helm"-Schaltfläche im Beitragseditor. Vom unbenutzten Typ und einem fehlenden Semikolon abgesehen fällt mir nichts Besonderes auf, eigentlich sollte die 15 im Memo erscheinen. Ist der Button denn auch im Objektinspektor mit der Methode verknüpft?
|
AW: Memos und Buttons
naja das haben wir ja alles so aber da kommt trotzdem nix
|
AW: Memos und Buttons
Habt ihr mal einen Haltepunkt in die Methode gesetzt und geschaut, ob dort auch angehalten wird?
|
AW: Memos und Buttons
ok wir haben es aber wie bekommt man in Form1 den text aus dem Memofeld raus?
|
AW: Memos und Buttons
Wie meinen? :gruebel:
|
AW: Memos und Buttons
ok wir habens :D
wir melden uns in 15 minuten beim nächsten problem ok? :P |
AW: Memos und Buttons
Jetzt hätte mich eigentlich interessiert, wo nun der Fehler war :|
Und was ist eigentlich aus eurem ![]() |
AW: Memos und Buttons
wir haben das program einfach neu gestartet und dann ging das :D
naja und das hier machen wir eigentlich nur weil uns das sudoku zu kopliziert war. und nun zur nächsten fragen wir wollen wissen wie man die letzte zahl die man eingegeben hat wieder weg machen kann aber nur die letzte? |
AW: Memos und Buttons
Wenn Ihr eine Zeile mit
Delphi-Quellcode:
hinzugefügt habt, womit entfernt man dann wohl eine?
.Lines.Add('Text')
(Gibt es hier keine Spoiler-Tags?) Schaut euch mal
Delphi-Quellcode:
an. Der Index ist die Nummer der Zeile, die ihr wieder entfernen wollt. Probiert mal mit einem zweiten Button aus, beispielsweise fest die dritte Zeile zu entfernen.
.Lines.Delete(index:Integer)
|
AW: Memos und Buttons
oh danke das ist eine geniale hilfe aber wie bekommen wir die letzte zeile raus und nicht eine bestimmte??
danke nochmal |
AW: Memos und Buttons
Die erste Zeile hat den Index 0, die letzte den Index Count - 1.
|
AW: Memos und Buttons
danke schön das hätten wir jetzt müssen wir aus den zahlen nur noch den durchschnitt bilden
|
AW: Memos und Buttons
Und genau deshalb war es vielleicht nicht das geschickteste, die Zahlen erst in ein Textfeld zu schreiben, denn jetzt sind es keine Zahlen mehr, sondern Text. Das könnt ihr zwar genauso wieder umwandeln, aber das ist alles unnötige Arbeit.
Ich denke mal, dazu war euer Zahlen-Array
Delphi-Quellcode:
ursprünglich gedacht? Macht erst die Zahlen da hinein, rechnet damit was das Zeug hält und schreibt dann ganz am Schluss die einzelnen Zahlen und die errechneten Werte wie z.B. Durchschnitt, Standardabweichung in das Memo.
tZahlen
|
AW: Memos und Buttons
hmmmm okay verstehe.
dann betrachten iwr dieses Memofenster nur also fenster, wo man schauen kann was man gerade angeklickt hat. nur wir verstehen nicht ganz wie wir das anstellen sollen :D |
AW: Memos und Buttons
Zitat:
|
AW: Memos und Buttons
Ich versteh ehrlich gesagt auch nicht, wo jetzt auf einmal geklickt wird.
Was soll das Programm tun - Der Benutzer gibt fest 15 Kommazahlen ein und das Programm druckt dann nochmal alle 15 Zahlen und den Durchschnitt in eine Memo, richtig? Wenn ja, wie gibt der Benutzer das ein? Habt ihr fest mehrere Buttons erstellt die für jede Note stehen sollen? |
AW: Memos und Buttons
Ist doch ein schönes Beispiel mal was über Array's zu lernen. Hier mal ein Ansatz, aber ohne Gewähr, da nur hier in den Editor grtippt:
Delphi-Quellcode:
interface
Type TNotenliste = array of integer; TForm1=class(TForm) //alles was man so auf der Form hat private //... Notenliste:TNotenliste; function NotenAnzahl:integer; function NotenSumme:integer; function NotenDurschnitt:Float; public //... procedure NoteHinzu(Note:integer); procedure NoteWeg; procedure MemoSchreiben; end; implementation procedure TForm1.NoteHinzu(Note:integer); begin //Hier ggf. erst prüfen, ob Note zw. 1 und 6 //Hier ggf. erst prüfen, ob maximale Notenzahl (z.B. 15) schon voll ist SetLength(Notenliste,High(Notenliste)+2) //Array um einen Platz vergrößern //High(Array)+2=Length(array)+1 Notenliste[High(Notenliste)]:=Note; end; procedure TForm1.NoteWeg; begin //Einfach Array mit SetLength um 1 verkleinern und so das letzte Element löschen end; procedure TForm1.MemoSchreiben; var i:integer; begin Memo1.Clear; for i:=Low(Notenliste) To High(Notenliste) do Memo1.Lines.Add(IntToStr(Notenliste[i])); Memo1.Lines.Add('Durschnitt: '+FloatToStr(Notendurschnitt)); end; function TForm1.NotenAnzahl:integer; begin //Funktion Length benutzen end; function TForm1.NotenSumme:integer; begin //Über das Array iterieren wie bei MemoSchreiben end; function TForm1.NotenDurschnitt:Float; begin if NotenAnzahl>0 then Result:=NotenSumme/NotenAnzahl //ggf. noch runden else Result:=0; end; |
AW: Memos und Buttons
Zitat:
Wir haben 16 Button mit den zahlen 0 bis 15, wenn irgendeine angeklickt wird, so erscheint diese im Memo. Nun kann der Nutzer seine Noten "eintragen". Es erscheint dann bspw. : 13 14 15 7 4 (untereinander). Dann haben wir einen Button, wo die letzte Aktion rückgängig gemacht wird und einen, wo das komplette Memo gelöscht wird, also der Inhalt. Nun zum Ziel der Sache. Mit den Noten, die in das Memo eingetragen wurden, soll nun die Summer ermittelt werden, wenn ein weiterer Button geklickt wird. Um nun den Mittelwert zuerrechnen. Also das kann ja gleich passieren. also Summe berechnen und dann gleich den Mittelwert. Dieser Mittelwert soll dann in einem Edit-Feld ausgegeben werden. So haben wir uns das vorgestellt. :D ich hoffe das ist irwie möglich :/ |
AW: Memos und Buttons
#20 schon gesehen?
Ich ergänze das noch. Jedem eurer 15 Buttons im Obejekt-Inspektor noch den entsprechenden Wert (1-15) in der Eigenschaft Tag eintragen und im OnClick-Ereignis folgende (noch zu erstellende) Prozedur eintragen: "AllButtonClick". Die könnte dann so aussehen:
Delphi-Quellcode:
TForm1.AllButtonClick(Sender:TObject)
begin if Sender is TButton then NoteHinzu(TButton(Sender).Tag); end; |
AW: Memos und Buttons
Zitat:
okay, und was erreiche ich nun damit :? |
AW: Memos und Buttons
Ich hätte noch einen kleinen Vorschlag ...
Delphi-Quellcode:
program NotenAVG;
uses Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs, StdCtrls,ComCtrls; Type TNoteArray = Array [0 .. 15] of Integer; TWorker = Class private FNoteArray: TNoteArray; function GetAvg: Double; public procedure AddNote(Sender: TObject); procedure ListViewData(Sender: TObject; Item: TListItem); End; var Worker: TWorker; NoteArray: TNoteArray; F: TForm; LV: TListView; i: Integer; { TWorker } procedure TWorker.AddNote(Sender: TObject); begin FNoteArray[TControl(Sender).Tag] := FNoteArray[TControl(Sender).Tag] + 1; LV.Invalidate; end; Function TWorker.GetAvg: Double; var i, cnt: Integer; begin cnt := 0; Result := 0; for i := 0 to 15 do begin cnt := cnt + FNoteArray[i]; Result := Result + FNoteArray[i] * i; end; if cnt > 0 then Result := Result / cnt; end; procedure TWorker.ListViewData(Sender: TObject; Item: TListItem); begin if Item.Index = 16 then begin Item.Caption := 'AVG'; Item.SubItems.Add(FormatFloat('0.00', GetAvg)); end else begin Item.Caption := Format('%d Punkte', [Item.Index]); Item.SubItems.Add(IntToStr(FNoteArray[Item.Index])); end; end; begin Worker := TWorker.Create; try F := TForm.Create(Application); F.ClientHeight := 16 * 24; F.ClientWidth := 230; F.DoubleBuffered := true; LV := TListView.Create(F); LV.Parent := F; LV.Width := 200; LV.ViewStyle := vsReport; LV.Font.Style := [fsBold]; With LV.Columns.Add do begin Caption := 'Note'; Width := 100; end; With LV.Columns.Add do begin Caption := 'Anzahl'; Width := 96; end; LV.Align := alLeft; LV.OwnerData := true; LV.Items.Count := 17; LV.OnData := Worker.ListViewData; for i := 0 to 15 do begin With TButton.Create(F) do begin Parent := F; Tag := i; Left := 200; Height := 24; Width := 30; Top := i * Height; Caption := IntToStr(i); OnClick := Worker.AddNote; end; end; F.ShowModal; finally Worker.Free; end; end. |
AW: Memos und Buttons
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz