Avatar billede heyn Nybegynder
09. april 2007 - 15:57 Der er 10 kommentarer og
1 løsning

Nybegynderen: Kan ikke oprette en label runtime.

Hej Alle.

Jeg arbejder med C++ Builder på WinXP.
Jeg har brug for at oprette en label runtime, som jeg senere ønsker at ændre data som f.eks. tekst og position for.

Jeg kan ikke få det til at fungere - Får bare en masse mærkelige beskeder om fejl på i forskellige adresser.

Har prøvet følgende testkode:

__fastcall TForm_Tastatur::TForm_Tastatur(TComponent* Owner)
        : TForm(Owner)
{
        TLabel *Label3;  // Dette statement genererer ikke fejl.
        Label3->Font->Color = 0x00000000;
        Label3->Caption = "J";
        Label3->Color = 0x00EBFEFD;
        Label3->Left = 200;
        Label3->Top = 224;
        Label3->Height = 25;
        Label3->Width = 14;
}

Håber nogen eksperter kan hjælpe en nybegynder i Borland

Christian
Avatar billede bertelbrander Novice
09. april 2007 - 17:45 #1
Det letteste er nok at oprette en tom label på din form, og så flytte og ændre teksten på denne runtime.
Avatar billede heyn Nybegynder
09. april 2007 - 18:40 #2
Det har jeg tænkt på. Problemet er at jeg ikke kan forudsige hvor mange label jeg skal anvende.
Spørgsmålet er egentlig en udløber af http://www.eksperten.dk/spm/771834
Meningen er at programmet skal udføre en række baner for at køre indlæring af blindskrift.
Jeg opdagede at jeg ved at anvende texttypen terminal i en lang række af labels efterhinanden kunne simulere en editlinie. Men der er ikke samme antal karakterer i hver 'bane'.
Jeg kan godt løse problemet hvis jeg lavede problemet direkte i terminalen, men jeg har ingen erfaring med at udvikle Win-grænseflader i C++ Builder.
Avatar billede tiller3 Nybegynder
09. april 2007 - 19:37 #3
TLabel *Label3; laver en pointer til en TLabel ikke andet. Saa du mangler stadig at allokere hukommelse til din TLabel. Proev med

TLabel *Label3=new TLable();
Avatar billede bertelbrander Novice
09. april 2007 - 20:21 #4
Dette virker:
  TLabel *Label3 = new TLabel(this);
  Label3->Parent = this;
  Label3->Font->Color = 0x00000000;
  Label3->Caption = "J";
  Label3->Color = 0x00EBFEFD;
  Label3->Left = 200;
  Label3->Top = 224;
  Label3->Height = 25;
  Label3->Width = 14;
Det er kun de to første linjer der er ændret/nye.
Avatar billede heyn Nybegynder
09. april 2007 - 20:34 #5
SELVFØLGELIG!!!
Objektet skal erklæres først. Det er nogle år siden jeg prog. C++. Jeg har koncentreret mig en del med web på det sidste.

Denne parent - Hvad er det?
Hvordan aflæser man bedst indput fra kyebord?

Under alle omstændigheder:
->> Bertelbrander: Smider du også et svar.

M.v.h. Christian
Avatar billede bertelbrander Novice
09. april 2007 - 20:50 #6
Parent er det den "ejer" en kontrol, i dette tilfælde er parent formen.
Man siger også at label'en er child til formen.

Jeg ved ikke ret meget om Builderen, men du skal nok kikke på OnKeyPress eller OnKeyDown event'ene, som du finder på formen.

Jeg samler ikke på point.
Avatar billede heyn Nybegynder
09. april 2007 - 20:56 #7
Ingen point - Det må du så undvære.

Keypress, og keydown er selve event, men de indlæser så vidt jeg ved ikke værdier. Nå - jeg vil foreløbig fortsætte med getch().
Avatar billede bertelbrander Novice
09. april 2007 - 22:54 #8
OnKeyDown får som parameter den tast der er trykket.
Jeg tror ikke at du kan bruge getch() i en Windows app.
Avatar billede heyn Nybegynder
09. april 2007 - 23:12 #9
Ok - Tak skal du have for oplysningen.
Opdager at der desværre ikke er nogen onKeyDown på labels.

Jeg har i nogle af mine tests fået getch() til at fungere i windows app.

M.v.h. Christian
Avatar billede bertelbrander Novice
09. april 2007 - 23:23 #10
Du bliver nødt til at fange OnKeyDown for din form.
Jeg vidste ikke at getch() kan virke hvis ikke man har en konsol.
Avatar billede heyn Nybegynder
12. april 2007 - 10:43 #11
Det med getch() uden for konsol var en fejl!!! Sorry.
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