Jag håller på att göra ett enkelt fakturaprogram i Delphi, och jag har kommit till det stadiet där säljaren ska mata in i edit-rutor vad som skall säljas.
Jag har inte kommit på något bättre sätt än att skapa ett gäng rader med edit-rutor för all (antal, artikel, apris och totalt) information per rad..
Iallafall, mitt problem är att jag har 8 sådana här rader just nu, och min kod för att gå igenom dem ser ut såhär:
if (StrToInt(edtAntal1.Text) > 0) then
if (StrToInt(edtApris1.Text) > 0) then
edtTotalt1.Text := IntToStr(StrToInt(edtAntal1.Text)*StrToInt(edtApris1.Text));
för VARJE edit-rad, dvs edtAntal1 till edtAntal8..
Någon som har en vettig ide på hur jag lättare kan göra ovanstående?
Jag vågar inte ens tänka på den kod som kommer krävas när jag ska summera alla totalt-rutorna oxå..
Du kan "leta" efter komponenter om du vet deras namn. Om du t ex har en Editruta som heter "Edit1" så kan du komma åt den så här :
(FindComponent('Edit1') as TEdit).Text = 'Hejsvejs';
Att summera alla editrutor görs så här :
var I : Integer;
var Temp : String;
var Sum : Integer;
Sum := 0;
for I := 0 to 10 do
begin
Sum := Sum + IntToStr((FindComponent('Edit1' + IntToStr(I)) as TEdit).Text)
end;
>Jag har inte kommit på något bättre
En grid kanske skulle funka bättre. Sedan kan man ju använda 0 som start värde i alla edit rutor och göra en kontroll på vad man tillåts mata in. Så att du slipper alla "if edit > 0 then".
>Jag har inte kommit på något bättre
En grid kanske skulle funka bättre. Sedan kan man ju använda 0 som start värde i alla edit rutor och göra en kontroll på vad man tillåts mata in. Så att du slipper alla "if edit > 0 then".
Good call. Jag har lagt in en StringGrid nu istället och fått den att anpassa sina rows i storlek. Nu har jag bara stött på ett (stort men säkert enkelt) problem, hur fasiken kan jag låta användaren mata in data i tabellen? :)
Jag vill att användaren ska kunna klicka på cellen som han ska mata in i och kunna börja skriva direkt "i" den.
Har testat att markera cellen, trycka F2 osv men jag kan fortfarande inte mata in i den :(