Avatar billede balstrup Nybegynder
25. august 2003 - 13:24 Der er 19 kommentarer og
1 løsning

Justering af længden på en spacecharacter

Er det muligt at justere længden på en space character så den har samme fuld længde istedet for kun den halve længde af en normal char??

Eller evt. er det muligt at indsætte en tab (0x9) i en listbox?
Jeg bruger en CString til at arbejde med strengen.

Jeg skal have nogle bestemte værdier i strengene til at stå lige under hinanden.
Avatar billede jpk Nybegynder
25. august 2003 - 13:26 #1
Længden af en karakter afhænger af skrifttypen...
Avatar billede anhansen Nybegynder
25. august 2003 - 13:26 #2
Hvis teksten skal justeres er en tabel altid et godt udgangspunkt. Med hensyn til spacekarakteren er der nogle skrifttyper hvor alle tegn (inkl. space) fylder lige meget og andre hvor de ikke gør.
Avatar billede idle Nybegynder
25. august 2003 - 13:26 #3
Det nemeste er - i min verden - at skifte fonten ud med en, hvor alle karakterer fylder lige meget. F.eks. er Courier skrifttypen egnet.
Avatar billede jpk Nybegynder
25. august 2003 - 13:26 #4
Hvis du fx vælger en monospace skrifttype, vil alle karakterer have samme bredde.
Avatar billede balstrup Nybegynder
25. august 2003 - 13:28 #5
anhansen<< hvordan laver man en tabel i en listbox?????
Avatar billede laffe Nybegynder
25. august 2003 - 13:34 #6
Nej du kan ikke ændre længden af en space character fordi længden/størrelsen bestemmes af fonten. Der findes to slags fonte TrueType og Fixed fonte.

I en Fixed font fylder alle character lige meget (de har den samme bredde).

I en True Type font varierer bredden af de enkelte characterer.

Det nemmeste er at gøre som jpk foreslår nemlig at bruge en Fixed font som f.eks. Courier.
Avatar billede anhansen Nybegynder
25. august 2003 - 13:43 #7
Der må jeg lige melde pas. Desværre. Så måske løsningen med en monospace skrifttype er at foretrække.. Med mindre der er andre der kan komme med en løsning på det med tabel i listbox?
Avatar billede jpk Nybegynder
25. august 2003 - 13:48 #8
Du kan ikke lave en tabel i en std listbox...

Du kan dog anvende en listbox med flere kolonner.
Avatar billede balstrup Nybegynder
25. august 2003 - 13:56 #9
Hvordan virker det med en ListBox med flere kolonner?????
Avatar billede jpk Nybegynder
25. august 2003 - 14:03 #10
Jeg skal prøve at illustrere det herunder
(håber det ligner noget)

Alm. listbox
__________
|__________|
|__________|
|__________|
|__________|


Listbox med 2 kollonner
___ ______
|___|______|
|___|______|
|___|______|
|___|______|
Avatar billede balstrup Nybegynder
25. august 2003 - 14:05 #11
OK! Det ligne jo noget jeg kan bruge!
Avatar billede balstrup Nybegynder
25. august 2003 - 14:06 #12
Hvordan bruger man en multicolumn listbox?
Jeg mener, hvordan placerer man tingene i en ny kolonne??
Avatar billede jpk Nybegynder
25. august 2003 - 14:16 #13
Eftersom du bruger CString, går jeg udfra du bruger MFC generelt..?

Hvis det er tilfældet, kan du måske anvende en CListCtrl, den har mulighed for flere kolonner.
Avatar billede jpk Nybegynder
25. august 2003 - 14:20 #14
Understående er et eksempel på brugen:
(m_List er en membervariabel af typen CListCtrl)

    m_List.InsertColumn(0, "Column 1", LVCFMT_LEFT, 120);
    m_List.InsertColumn(1, "Column 2", LVCFMT_LEFT, 120);
    m_List.InsertColumn(2, "Column 3", LVCFMT_LEFT, 120);

    CString strColumn;
    for(int nRow=0; nRow<5; ++nRow)
    {
        m_List.InsertItem(nRow, "");
        for(int nColumn=0; nColumn<3; ++nColumn)
        {
            strColumn.Format("%d%d", nColumn+1, nRow+1);
            m_List.SetItemText(nRow, nColumn, strColumn);
        }
    }
Avatar billede balstrup Nybegynder
25. august 2003 - 14:53 #15
jeg vil gerne bruge en CListBox....

hvordan ændrer man fonten til f.eks. Courier?
Avatar billede jpk Nybegynder
25. august 2003 - 15:14 #16
Du kan ændre fonten via SetFont metoden (nedarvet fra CWnd).
Metoden tager et argument, nemlig et CFont objekt, som kan initialiseres som følger:

// 12pt font
CFont font;
font.CreatePointFont(120, "Times New Roman", NULL);
Avatar billede balstrup Nybegynder
25. august 2003 - 15:36 #17
nu var det lige courier jeg ville bruge da alle karakterer har samme størrelse..
jeg har gjort følgende..

CListBox* list = (CListBox*) (GetDlgItem( IDC_OS_LIST ));

CFont font;
font.CreatePointFont(120, "Courier New", NULL);
   
list->SetFont(&font);

men fonten bliver ikke ændret...
Avatar billede jpk Nybegynder
25. august 2003 - 15:38 #18
Laver du fonten på stack'en?

Du bliver nødt til at lave fonten som en member på klassen eller med med new (på heap'en), ellers eksisterer den jo kun inde i din funktion...
Avatar billede anhansen Nybegynder
12. oktober 2003 - 15:49 #19
Har du fundet ud af noget... Er der nogle der skal ha point eller skal der bare lukkes?
Avatar billede balstrup Nybegynder
08. januar 2004 - 13:02 #20
Jeg lukker lige spørgsmålet...
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