oblomsoe Skrevet 12. juni 2005 Del Skrevet 12. juni 2005 Lurer på hvordan jeg får til å søke i ett listbox komponent, slik at man feks trykker ctrl+f og da får man opp ett vindu hvor man skriver inn ett navn og hvis listbox componentet inneholder det så blir det markert, vet at jeg må bruke den slke dialogen men har ikke peil på hva jeg skal skrive på noen av componentene. Og det ville vært konge hvis noen viste av noe alla den Winamp har slik at de blir filtrert isteden for at man trykker søk også kommer det opp noen. Takk for alle svar. Lenke til kommentar
oblomsoe Skrevet 12. juni 2005 Forfatter Del Skrevet 12. juni 2005 Har noen spørsmål til som jeg kom på: Jeg har to Edit bokser, og skriften i de vil jeg ha i en edit boks. Så jeg brukte denne koden: Edit1.text := Eedit2.text + edit3.text; Og dette funker utmerket, bare at det eneste som kommer er det som står i de to edit boksene ved oppstart av programmet. Så jeg lurte hvor jeg måtte legge den koden dær slik at de kom automatisk hver gang det ble skrevet noe i de. Og mitt andre spørsmål er om det er mulig å få den teksten i Edit1 til å rulle bortover automatisk, og isåfall hvordan? Takk Lenke til kommentar
Format71 Skrevet 13. juni 2005 Del Skrevet 13. juni 2005 1. Søk / filter i listbox Vil anta at winamp søker eller filtererer i en underliggende datastruktur og deretter tegner gui'et på nytt. 2. Fange opp endringer i editboks Bruk 'OnChange'-eventet dersom det skal skje 'realtime'. OnExit dersom ting skal oppdateres først når man er ferdig og endre. (Krever at man forlater feltet for å få se oppdateringen) 3. Scroll i editboks Her kreves det en annen komponent. TEdit har ingen slik funksjonalitet og støtter heller ikke custom draw sånn helt uten videre. -Vegar Lenke til kommentar
oblomsoe Skrevet 13. juni 2005 Forfatter Del Skrevet 13. juni 2005 (endret) Oki.. Takk, skal prøve å se om jeg forsto den edit greian. Men skjønte ikke den søkinga til Lisboxen helt? Kan ikke så mye om delphi osv enda, har du noen eksempel/kodesnutter. Og vet du av noen komponenter som er det samme som Tedit bare at de scroller? Takk Edit: Eller er det mulig med scroll på en Label elr en annen tekst dings? Takk Edit2: Lurte også på om det var en script som gikk ann å bruke som gjorde at når Tmediaplayer var ferdig med en sang så gikk Tlistbox ett hakk ned og Tmediaplayer begynner automatisk å spille igjen? Takk Edit3: Gullfisk minne her så jeg kom ikke på alle spørsmålene først:P men her er hvertfall enda ett: Holder på med en slags consol ting. Her er litt koden jeg bruker: if Form3.Edit1.Text = 'exit' then close; if Form3.Edit1.Text = 'open' then btnOpenFolder.Click; if Form3.Edit1.Text = 'play' then mp3player.Play; if Form3.Edit1.Text = 'stop' then mp3player.Stop; Så det jeg lurte på var om det fantes en kommando som jeg kunne sette helt på slutten av det dær med noe som skal skje hvis noe annet det det som står dær blir skrevet inne... Alltså noe slikt: if Form3.Edit1.Text = 'exit' then close; if Form3.Edit1.Text = 'open' then btnOpenFolder.Click; if Form3.Edit1.Text = 'play' then mp3player.Play; if Form3.Edit1.Text = 'stop' then mp3player.Stop; If not elr else then Memo1.Lines.add('Kommandoen eksisterer ikke'); Håper noen vet hvordan dette også gjøres:P Takk Endret 13. juni 2005 av oblomsoe Lenke til kommentar
tasle Skrevet 14. juni 2005 Del Skrevet 14. juni 2005 Jeg skjønner ikke helt hva du mener med scrolling, er det vertikal eller horisontal scrolling? En editboks scroller jo horisontalt hvis du skriver inn mer tekst der enn bredden av boksen tillater å vise. Hvis det er vertikalt, er kanskje en TMemo det du er på jakt etter ? Ellers har både listbokser og kombobokser en egenskap som heter Autocomplete. Er det den du mener å bruke som en erstatning for Ctrl F? Ang. å spille av en rekke med melodier fra en listboks, så kan du i prinsippet bruke en for-løkke: for I:= 0 to Listbox1.Items.Count-1 do SpillMelodi (Listbox1.Items [I]); Den kodesnutten du viste med tillatte kommandoer bør bruke ELSE, noe sånt: if Form3.Edit1.Text = 'Close' then Exit else if .... else if ... else Memo1.Lines.Add ('Kommandoen finnes ikke'); Lenke til kommentar
oblomsoe Skrevet 14. juni 2005 Forfatter Del Skrevet 14. juni 2005 (endret) Takk, skal prøve dette. Men det jeg mente isteden for scrolling var rullende tekst, slik at teksten ruller fra begynnelse til slutt. Edit: Skjønte ikke det med Autocomplete helt. For finner jeg det, og får jeg da en sånn søke funksjon? Edit2: For også noen feilmld på den koden jeg fikk, hvor skal jeg legge den? Endret 14. juni 2005 av oblomsoe Lenke til kommentar
tasle Skrevet 14. juni 2005 Del Skrevet 14. juni 2005 OK, du vil ha en "evigvarende" scrolling? Da bør du satse på å laste ned en scrolling label for eksempel. Prøv å Google etter en slik komponent, eller download Jedi's jvcl komponentpakke. Der finner du scrolling labels og litt av hvert annet. Jeg tror du finner en link til en download av JEDI på http://homepages.borland.com/jedi/jcl/. Autocomplete virker som du har beskrevet om søking ovenfor, altså stave de(n) første bokstaven(e) i et ord, så hopper autocomplete til første forekomst (linje) der bokstavene foreslår ordet er oppført om dette finnes i listboksen/komboboksen. Sjekk hjelp (F1) om TListbox Autocomplete, så ser du mer i detalj om dette er noe for deg, eller prøv en kodesnutt, så ser du hvordan det virker. Lenke til kommentar
gerri28 Skrevet 22. juni 2005 Del Skrevet 22. juni 2005 (endret) Er ikke helt sikker på om jeg forstod det med scrollingen jeg heller, men denne sørger for at edit1 viser det siste som ble skrevet: procedure TForm1.Edit2Change(Sender: TObject); begin edit1.text := edit2.text + edit3.text; edit1.SelStart := length(edit1.text); end; procedure TForm1.Edit3Change(Sender: TObject); begin edit1.text := edit2.text + edit3.text; edit1.SelStart := length(edit1.text); end; For winamp lookalike søking: dropp en Edit og en Listbox, lag en tekst fil med noen linjer med tekst i, eller generer en stringlist med data i. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, strUtils; type TForm1 = class(TForm) Edit1: TEdit; ListBox1: TListBox; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormShow(Sender: TObject); procedure Edit1Change(Sender: TObject); private S: TStringList; { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Edit1Change(Sender: TObject); var x: integer; begin listbox1.Items.Clear; for x := 0 to S.Count-1 do begin if length(edit1.text) > 0 then begin if AnsiContainsText(s[x],edit1.text) then listbox1.Items.Add(s[x]); end else listbox1.Items.Add(s[x]); end; end; procedure TForm1.FormShow(Sender: TObject); begin s := TStringList.Create; s.LoadFromFile('test.txt'); listbox1.Items := s; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin s.free; end; end. EDIT: Dette vil gå tregt hvis det er mange linjer det er snakk om, for å få fortgang på det så vill jeg tro at SQL og ListView med OwnerData vil få fart på sakene. Vet ikke hvordan winamp gjengen har gjort det, men de har nok en del mere peiling en hva jeg har. Endret 22. juni 2005 av gerri28 Lenke til kommentar
hjahre Skrevet 27. februar 2006 Del Skrevet 27. februar 2006 (endret) for å lage en scroll så kan du bruke denne koden. function scroll(txt:string):string; begin result := Copy(txt, 2, length(txt)-1) + Copy(txt,1,1); end; for å scrolle mot høyre kan du sette inn denne isteden; ... result := Copy(txt,length(txt)-1,1) + Copy(txt, 1, length(txt)-1); ... legg den inn i en Timer, så burde det funke. Edit1.text := scroll(edit1.text); Endret 27. februar 2006 av hjahre Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå