![]() |
Frage zu Memo-Funktionsweise
Hi,
kann mir einer sagen warum das hier nicht funktioniert:
Delphi-Quellcode:
Das Ergebnis sieht so aus:
procedure TForm1.EditAlarmChange(Sender: TObject);
var MemoText: String; begin if StringGrid.Cells[0,1] = DateToStr(Date) then begin if StringGrid.Cells[1,1] = copy(LabelUhr.Caption,1,5) then begin Datei := StringGrid.Cells[2,1]; MemoText := DateTimeToStr(Date + Time); Memo.Lines.Strings[MemoLine] := MemoText; MemoLine := MemoLine +1; if Datei <> '' then begin ShellExecute(Application.Handle, 'open', PChar(Datei), nil, nil, SW_NORMAL); MemoText := ' - ' + Datei + ' wird ausgeführt'; Memo.Lines.Strings[MemoLine] := MemoText; MemoLine := MemoLine +1; end; Text := StringGrid.Cells[3,1]; if Text <> '' then begin showmessage(Text); MemoText := ' - ' + Text + ' angezeigt'; Memo.Lines.Strings[MemoLine] := MemoText; MemoLine := MemoLine +1; end; end; end; end; 17.01.2005 07:38:00 - F:\- Eigene Dateien -\Delphi\Taskplaner\Nero.exe wird ausgeführt THX fragme |
Re: Frage zu Memo-Funktionsweise
Was stattdessen passiert ist, dass Form1.Caption auf den Inhalt von Text gesetzt wird, obwohl ich nirgends eine Zuweisung dafür im Programm hab.
|
Re: Frage zu Memo-Funktionsweise
und beim Weiterprggen stellt sich gleich noch eine Frage :mrgreen:
Beim Rechtsklick auf StringGrid soll ein PopUp Menü erscheinen, in dem man Zeile löschen auswählen kann, soweit ganz einfach, aber wie kann ich rausfinden, in welcher Zeile der Click stattgefunden hat? |
Re: Frage zu Memo-Funktionsweise
Moin!
Erstmal: Schon 23 und immernoch nicht den Edit Button gefunden um seine Beiträge zu editieren? Und dann noch: Mehrere Fragen: mehrere Threads! Zitat:
Zitat:
MfG Muetze1 |
Re: Frage zu Memo-Funktionsweise
ok, werd ich mir merken fürs nächste mal :)
Text ist eine globale Variable, das ist soweit richtig, aber ich hatte das selbe Problem, als ich das Memo mit '----------' initialisiert hab und das ändern der Variable 'Text' hat auch nicht geholfen. kann es auch an dem '-' liegen ? |
Re: Frage zu Memo-Funktionsweise
Moin!
Zitat:
Also, deine Methode ist eine Methode von TForm1 und somit haben da die Eigenschaften und Variablen der TForm1 einen höheren Rang und liegen im Fokus. Wenn du nun aber eine globale Variable hast, dann schaut der Compiler diese nicht mal mit seinem Hintern an, da er als erstes in dem aktuellen Fokus nachschaut (also TForm1) und da schon eine Eigenschaft "Text" findet und daher diese nutzt. Das hatte ich dir vorhin schon geschrieben. Also hoffe ich mal das du jetzt verstehst woran es liegt. Ansonsten frage ich mich, warum heutzutage für sowas noch globale Variablen benutzt werden. Warum global? Warum nicht private oder wenn es sein muss auch public, aber warum global? Warum nur? MfG Muetze1 |
Re: Frage zu Memo-Funktionsweise
aha, ich hoffe ich hab verstanden was du meinst.
Also müsste es nach deiner Aussage reichen die Variable als private oder public zu deklarieren ? |
Re: Frage zu Memo-Funktionsweise
Moin!
Zitat:
Ansonsten könntest du auch die globale Variable umbennen - aber wie gesagt: lieber ins private bewegen und anders nennen. Ich für meinen Teil habe folgende Bennungen: -> alle lokalen Variablen in Funktionen/Proceduren bekommen ein kleines l vor der sonst ungarischen Notation (z.B: lElement : TElement) --- hierbei gilt diese Regel nicht für Zählvariablen bzw. Laufvariablen bestehend aus einem Zeichen (z.B.: Var i : Integer) -> alle Variablen innerhalb von Klassen (nicht public/published) bekommen ein kleines f vor der sonst ungarischen Notation (z.B. fLibrary : TLibrary;) -> alle Ereignismethodenvariablen bekommen ein grosses F vor der sonst ungarischen Notation (z.B. FOnChange : TNotifyEvent;) -> alle Elemente die Public sind bzw. Property-Namen sind direkt in ungarischer Notation ohne Prefix (z.B. Property OnChange : TNotifyEvent Read FOnChange Write FOnChange;) -> alle Konstanten bekommen ein kleines co vor der sonst ungarischen Notation (z.B: Const coElemDiff = 4;) -> alle globalen Variablen (sehr selten) bekommen ein kleines g vor der ungarischen Notation (z.B: Var gElemHandle : THandle;) Aber über Schreibweisen lässt sich eh stundenlang streiten, aber der Grund dafür das ich dies hier mal darlege liegt einfach darin, dass ich mit diesen Regeln keine solche Probleme wie du sie jetzt hast haben kann. Ich habe immer "f" vor Variablen der Klassen, immer ein "g" vor globalen Variablen und ein "l" vor lokalen Variablen, daher passiert es mir eigentlich nicht das ich eine Variable oder andere Property ausversehen anspreche... MfG Muetze1 |
Re: Frage zu Memo-Funktionsweise
Habe schon katastrophalere Source-Codes gesehen. 8)
Zitat:
Eine neue Zeile erzeugst du nämlich mit:
Delphi-Quellcode:
Was soll das Memo machen und was das Stringgrid ?
Memo.Lines.Add ('neue Zeile');
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:04 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