26. juli 2006 - 20:57Der er
11 kommentarer og 1 løsning
listbox, memo, memo.clear
Hej
Jeg har en listbox og en memo, forbundet, således, at når jeg trykker på en linje i listbox1, vises en tilsvarende tekstfil i memo1. hvis jeg trykker på en ny linje, slettes teksten i memo1, og den nye tekst hentes. Men hvis jeg trykker på området under nederste linje i listbox1, tilføjes teksten, som hører til linje 1 i listbox1 til memo1, imens teksten, der er der i forvejen bliver stående. hvorfor tilføjes den linje?
procedure TForm1.ListBox1Click(Sender: TObject); var a: integer; begin memo2.Clear; for a:=0 to listbox1.Count-1 do begin if listbox1.itemindex=a then memo2.Lines.add(memo1.Lines[a]); end; end;
jeg har fundet ud af, hvad problemet består i. det sker nemlig også, hvis jeg eksempelvis vil søge men så trykker annuller. Listbox1 opfatter handlingen som et tryk, altså onclick, og udfører så proceduren, hvor itemindex, så er 0, altså øverste linje. Men hvordan undgår jeg så det?
jeg ved ikke lige, hvad debuggeren er. hvor finder jeg den?
i øvrigt, hvor sætter man rækkefølgen af ens komponenter, altså hvilken der skal være øverst prioriteret. hvis jeg eksempelvis i et projekt laver en memo og så derefter laver endnu en memo og putter den præcis oven i den første memo. så hvis jeg klikker der, vil jeg få fat i memo2 og ikke memo1. det kan man vel ændre
Debuggeren er din bedste ven hvis noget ikke virker som det burde, et problem der måske ville tage 1 time at løse kan ordnes på 2 minutter med debuggeren. En kort forklaring syntes jeg ikke lige jeg kan komme med men her er lidt fra hjælpen:
No matter how careful you are when writing code, your programs are likely to contain errors, or bugs, that prevent them from running the way you intended. Debugging is the process of locating and fixing errors in your programs. The IDE provides debugging features, collectively referred to as the integrated debugger, that let you find and fix errors in your programs. The integrated debugger is a full-featured debugger that enables you to:
Control the execution of your program Monitor the values of variables and items in data structures Modify the values of data items while debugging
The integrated debugger can help you track down both runtime errors and logic errors. By running to specific program locations and viewing the state of your program at those places, you can monitor how your program behaves and find the areas where it is not behaving as you intended.
Ved at højre klikke på en komponent kan du vælge (Delphi 7) Bring to front, Send to back, der er muligvis flere muligheder i nyere Delphi versioner. Men ellers kan du jo ændre på rækkefølgen i dfm filen.
Jeg fandt ikke lige ud af, hvor debuggeren var, men jeg brugte Trace over. Er de to det samme? jeg fandt ud af, at den automatisk laver følgende procedure (og så åbenbart fjerner den igen):
procedure TForm1.ListBox1Enter(Sender: TObject); begin memo2.Lines.add(memo1.Lines[0]); end;
jeg slettede så linjen og erstattede den med "exit;". og nu virker det fint. Hvis debuggeren og Trace over er det samme, så tak for hjælpen. hvis ikke, så tak for inspiration. Du kan bare ligge et svar
Ja Trace er en af funktioner i debuggeren men der er også mange andre muligheder. Hvad du mener med "at den automatisk laver følgende procedure (og så åbenbart fjerner den igen)" har jeg absolut ingen ide om hvad betyder, men jeg er sikker på at debuggeren ikke har noget med det at gøre.
jeg mener bare, at jeg kan se, når Trace bruges, at proceduren pludselig findes, men den findes ikke når programmet er afsluttet. Og jeg har i hvert fald aldrig lavet den procedure.
Det kan ikke være sådan som du skriver, debuggeren kan ikke oprette den kode på nogen måde så den må være der i forvejen.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.