Avatar billede circadian Nybegynder
14. januar 2010 - 23:04 Der er 1 løsning

Samarbejde mellem Memo og ComboBox

Hej,

Jeg har en ComboBox med op til 25 elementer. Nedenfor har jeg en Memo. ComboBoxen (herefter kaldt 'menuen') består af nogle navne. Nedenfor Memo'en er der en Save-knap.

Her er hvad der skal ske:
1) Man vælger et navn i menuen.
2) Man skriver en tekst i Memo'en som passer lige nøjagtigt til det navn, man har valgt i menuen. Denne tekst kan være vilkårligt lang.
3) Efter man har skrevet teksten, trykker man på Save, og Memo'en bliver clearet.
4) Man kan nu gå op i menuen for at vælge et nyt navn - så kan man påbegynde at skrive en ny tekst, som passer til det nye navn, man har valgt. Så trykker man på Save igen, osv. osv.
5) Der skal være mulighed for at kunne gå tilbage og rette i en allerede gemt tekst. Hvis vi nu siger, at teksten for navn1 allerede er skrevet og gemt, og man pt. er i gang med at skrive på navn3's tekst, så kan man lige gemme teksten for navn3, og så vælge navn1 i menuen igen. Herefter skal den gemte tekst for navn1 selvfølgelig komme frem i Memo'en igen.

Ad 1) - Navnene, dvs. elementerne i menuen, er gemt i et array med 25 elementer.

var name : array[0..24] of string;

Ad 3) - Når man trykker på Save skal den tekst, man lige har skrevet, gemmes i en bestemt string variabel som passer med det valgte navn i menuen.

var tekst : array[0..24] of string;

Jeg går på denne måde ud fra, at man kan sige, at name[0] hører sammen med tekst[0], name[1] hører sammen med tekst[1], osv. Sådan ønsker jeg det i hvert fald.


Min menu er kaldt 'NamesMenu', og her er hvad der sker OnSelect:

procedure TForm12.NamesMenuSelect(Sender: TObject);
var i: integer;
begin
  // Gemme itemsne i variabler
  for i := 0 to 24 do
  begin
    name[i] := NamesMenu.Items[i];
  end;
end;

Jeg har selvfølgelig også en funktion for Save-knappen, men den indeholder pt. ingen kode der virker.


Jeg håber virkelig det kan lade sig gøre!
Avatar billede circadian Nybegynder
15. januar 2010 - 01:07 #1
Det lykkedes selv at komme frem til et resultat:

NamesMenuSelect lyder nu således:

  for i := 0 to 24 do
  begin
    name[i] := NamesMenu.Items[i];
    if (NamesMenu.ItemIndex = i) and (tekst[i] <> '') then
      Memo1.Text := tekst[i];
    if (NamesMenu.ItemIndex = i) and (tekst[i] = '') then
      Memo1.Clear;
  end;

Og Save-knappens kode lyder:

var i: integer;
begin
  for i := 0 to 24 do
    if NamesMenu.ItemIndex = i then
      tekst[i] := Memo1.Text;
end;
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester